Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/MifReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/MifReader.java	(revision 30573)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/MifReader.java	(revision 30574)
@@ -358,15 +358,19 @@
     }
     
+    private void startPolyLine() throws IOException {
+        polyline = new Way();
+        ds.addPrimitive(polyline);
+        readAttributes(polyline);
+        state = State.READING_POINTS;
+    }
+    
     private void parsePLine(String[] words) throws IOException {
-        if (words.length > 2) {
+        if (words.length <= 1 || "MULTIPLE".equalsIgnoreCase(words[1])) {
             // TODO: pline with multiple sections
-            polyline = new Way();
-            ds.addPrimitive(polyline);
-            readAttributes(polyline);
-            numpts = Integer.parseInt(words[1]); // Not described in PDF but found in real files: PLINE XX, with XX = numpoints
-            state = State.READING_POINTS;
-        } else {
             numpts = -1;
             state = State.START_POLYLINE;
+        } else {
+            numpts = Integer.parseInt(words[1]); // Not described in PDF but found in real files: PLINE XX, with XX = numpoints
+            startPolyLine();
         }
     }
@@ -458,8 +462,5 @@
             } else if (state == State.START_POLYLINE) {
                 numpts = Integer.parseInt(words[0]);
-                polyline = new Way();
-                ds.addPrimitive(polyline);
-                readAttributes(polyline);
-                state = State.READING_POINTS;
+                startPolyLine();
                 
             } else if (state == State.READING_POINTS && numpts > 0) {
