                 _stopFrame = NO_FRAME;
             }
         }
-        updateFrame(newFrame, false, overDuration);
+        updateFrame(newFrame, dt);
 
         for (var ii :int = 0; ii < this.numChildren; ++ii) {
             var child :DisplayObject = getChildAt(ii);

    /** @private */
    protected var _layers :Vector.<Layer>;
    /** @private */
    protected var _frames :int;
    /** @private */
    protected var _frameRate :Number;
    /** @private */


        // If _playTime is very close to _duration, rounding error can cause us to
        // land on lastFrame + 1. Protect against that.
        var newFrame :int = Math.min(int(_playTime * _frameRate), _numFrames - 1);

        // If the update crosses or goes to the stopFrame:
        // go to the stopFrame, stop the movie, clear the stopFrame
        if (_stopFrame != NO_FRAME) {
            // how many frames remain to the stopframe?
            var framesRemaining :int =
                (_frame <= _stopFrame ? _stopFrame - _frame : _numFrames - _frame + _stopFrame);
            var framesElapsed :int = int(actualPlaytime * _frameRate) - _frame;
            if (framesElapsed >= framesRemaining) {
                _playing = false;
