         if (_invertValues)
             currentTime = duration - currentTime;
     
-        var elapsedFraction:Number = easer.ease(currentTime/duration);
-
-        return interpolator.interpolate(elapsedFraction, startValue, endValue);
+        _elapsedFraction = easer.ease(currentTime/duration);
+
+        return interpolator.interpolate(_elapsedFraction, startValue, endValue);
     }
 
     /**

    //--------------------------------------------------------------------------

    /**
     * The value that the animation will produce at the beginning of the
     * animation. Values during the animation are calculated using the
     * <code>startValue</code> and <code>endValue</code>. This value

     * @private
     * Storage for the startDelay property. 
     */
    private var _startDelay:Number = 0;
    /**
     * The amount of time spent waiting before the animation
     * begins.
     *
     * @param value Amount of time, in milliseconds, to wait before beginning
     * the animation. Must be a value >= 0.
     * 
     * @default 0
     */
    public function set startDelay(value:Number):void
    {
