       switch clip
         when CLIP_FORWARD
           return
-
         when CLIP_BACKWARD
           @position = lastPosition
           @sourcePosition = lastSourcePosition
-
           return
 
-    if @sourcePosition.compare(position) != 0 and lastSourcePosition?
+    unless @sourcePosition.compare(position) is 0
       overshoot = position.traversalFrom(lastSourcePosition)
       lastPosition = lastPosition.traverse(overshoot)
       @position = lastPosition

          @sourcePosition = lastSourcePosition
          return

    if @position.compare(position) != 0 and lastPosition?
      overshoot = position.traversalFrom(lastPosition)
      lastSourcePosition = lastSourcePosition.traverse(overshoot)


    until @position.compare(position) >= 0
      lastPosition = @position
      lastSourcePosition = @sourcePosition
      {done} = @next()
      return if done

    if @clipping? and @position.compare(position) > 0
