         if (repeatBehavior == REVERSE)
             _invertValues = !_invertValues;
         var repeatValue:Object = getCurrentValue(0);
-        for each (var animationTarget:IAnimationTarget in animationTargets)
-        {
-            animationTarget.animationRepeat(this, repeatValue);
-        }
         // TODO (chaase): Make sure we're not already sending out an UPDATE
         // event with this value
         sendAnimationEvent(AnimationEvent.ANIMATION_UPDATE, repeatValue);

            sendAnimationEvent(AnimationEvent.ANIMATION_UPDATE, value);
            sendAnimationEvent(AnimationEvent.ANIMATION_END, value);
            
            for each (var animationTarget:IAnimationTarget in animationTargets)
            {
                animationTarget.animationEnd(this, value);
            }           
    
            // If animation has been added, id >= 0
            // but if duration = 0, this might not be the case.
            if (id >= 0)

                    // start the next cycle
                    _elapsedTime = duration;
                    var repeatValue:Object = getCurrentValue(_elapsedTime);
                    sendAnimationEvent(AnimationEvent.ANIMATION_UPDATE, repeatValue);
                    removeAnimation(this);
                    var delayTimer:Timer = new Timer(repeatDelay, 1);
