If the channel is limited with AxesConfig['maximum'] less than the
channels actual maximum, the position passed in to
move_just_onto_surface() may be a floating point bit value
(e.g. 62258.25). Because the maximum keeps the position from getting
to 62259, the approach phase goes on forever, getting stuck in
repeated jumps to 62258. By truncating the positive position down to
a lower integer, we ensure that it is an attainable value.
# default to the extreme value
channel = self._deflection_channel(self)
deflection = channel.get_maxdata()
+ position = int(position) # round down to nearest integer
if step == 0:
raise ValueError('must have non-zero step size')