For completeness I can report that I have managed to fix this problem myself, albeit in a rather "brute force" way - so if there's a simpler solution I'd be very interested. Rather than try to measure the property of the servo itself, I obtained the position of the objects it was ultimately linked to using script such as the following for each object - @@pos_mainarm_cylinder = this.get_position(1) @@pos_mainarm_ram = this.get_position(1) Then by computing the distance between the two objects I was able to limit the movement of the servo so as to remain within the correct range. dist = distance(@@pos_mainarm_cylinder, @@pos_mainarm_ram) joy = joystick(:lefty) if ( dist > 1.000 && joy < 0 ) || ( dist < 0.380 && joy >0 ) || (dist < 1.000 && dist > 0.380) @_mainarm = @_mainarm - joy end The limits of 1.00 and 0.38 were from the known dimensions of the objects. The local variable @_mainarm was then used to control the servo. The distance function uses Pythagoras's theory to calculate the distance between the middle of each object. As I say - any simpler ideas? Nonetheless it now works as intended irrespective of the starting position of the servos.