                     animator.easer = new Sine(0);
                 }
                 animator.stop();
+                // holds the final value to be set when animation ends
+                slideToValue = newValue;
                 animator.duration = slideDuration * 
-                    (Math.abs(value - newValue) / (maximum - minimum));
+                    (Math.abs(pendingValue - slideToValue) / (maximum - minimum));
                 animator.motionPaths = new <MotionPath>[
-                    new SimpleMotionPath("value", value, newValue)];
+                    new SimpleMotionPath("value", pendingValue, slideToValue)];
                 
                 dispatchEvent(new FlexEvent(FlexEvent.CHANGING));
                 animator.play();

     */
    private function animationEndHandler(animation:Animation):void
    {
        dispatchEvent(new Event("change"));
    }
}

     */
    private function animationUpdateHandler(animation:Animation):void
    {
        pendingValue = animation.currentValue["value"];
    }
    
    /**
