             // the same target
             if ("parent" in target && target.parent)
             {
-                var parentStart:* = propertyChanges.start["parent"];;
-                var parentEnd:* = propertyChanges.end["parent"];;
+                var parentStart:* = propertyChanges.start["parent"];
+                var parentEnd:* = propertyChanges.end["parent"];
+                if (playReversed)
+                {
+                    var tmp:* = parentStart;
+                    parentStart = parentEnd;
+                    parentEnd = tmp;
+                }
                 if (parentStart && !parentEnd)
                 {
                     if (parentStart is IVisualElementContainer)

        animation.animationTarget = this;
        animation.motionPaths = motionPaths;
        
        if (_seekTime > 0)
            animation.playheadTime = _seekTime;
        if (reverseAnimation)
            animation.playReversed = true;
        animation.interpolator = interpolator;

            {
                var parentStart:* = propertyChanges.start["parent"];
                var parentEnd:* = propertyChanges.end["parent"];
                if (playReversed)
                {
                    var tmp:* = parentStart;
                    parentStart = parentEnd;
                    parentEnd = tmp;
                }
                if (parentStart && !parentEnd && 
                    (parentStart is IVisualElementContainer || parentStart is SystemManager))
                {
                    var startIndex:* = !playReversed ? 
                        propertyChanges.start["index"] :
                        propertyChanges.end["index"];
                    if (parentStart is IVisualElementContainer)
                    {
                        var startContainer:IVisualElementContainer = 
