                 identifier = args[i];
                 i++;
             }
+            else if (prevIdentifier == "m" || prevIdentifier == "M")
+            {
+                // If a moveto is followed by multiple pairs of coordinates, 
+                // the subsequent pairs are treated as implicit lineto commands. 
+                identifier = prevIdentifier == "m" ? "l" : "L";
+            }
+            
+            // Convert to lowercase to make the following comparison logic simpler
+            prevIdentifier = prevIdentifier.toLowerCase();
             
             var useRelative:Boolean = (identifier.toLowerCase() == identifier);
             

            
            prevX = x;
            prevY = y;
            prevIdentifier = identifier.toLowerCase();
        }
        
        segments = newSegments;

        var newSegments:Array = [];
        
        var identifier:String;
        var prevIdentifier:String = "";
        var prevX:Number = 0;
        var prevY:Number = 0;
        var lastMoveX:Number = 0;
