Index: src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(revision 17448)
+++ src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(working copy)
@@ -395,7 +395,7 @@
         }
     }
 
-    private static final List<String> DEFAULT_LINEAR_TAGS = Arrays.asList("barrier", "fence_type", "source");
+    private static final List<String> DEFAULT_LINEAR_TAGS = Arrays.asList("barrier", "fence_type", "highway", "source");
 
     /**
      * This method removes tags/value pairs from inner and outer ways and put them on relation if necessary.
@@ -445,6 +445,8 @@
             }
         }
 
+        int origValuesSize = values.size();
+
         for (String key : conflictingKeys) {
             values.remove(key);
         }
@@ -456,11 +458,13 @@
         if ("coastline".equals(values.get("natural")))
             values.remove("natural");
 
+        boolean moveTags = Config.getPref().getBoolean("multipoly.movetags", true);
+        boolean badMove = moveTags && Config.getPref().getBoolean("multipoly.no-movetag-on-conflict", true)
+                && (!conflictingKeys.isEmpty() || origValuesSize > values.size());
+        List<Command> commands = new ArrayList<>();
+
         values.put("area", OsmUtils.TRUE_VALUE);
 
-        List<Command> commands = new ArrayList<>();
-        boolean moveTags = Config.getPref().getBoolean("multipoly.movetags", true);
-
         for (Entry<String, String> entry : values.entrySet()) {
             String key = entry.getKey();
             String value = entry.getValue();
@@ -482,6 +486,10 @@
         }
 
         values.remove("area");
+        if (badMove && !commands.isEmpty()) {
+            commands.clear();
+            moveTags = false;
+        }
         if (moveTags && !values.isEmpty()) {
             // add those tag values to the relation
             Map<String, String> tagsToAdd = new HashMap<>();
@@ -498,7 +506,6 @@
                 commands.add(new ChangePropertyCommand(Collections.singleton(relation), tagsToAdd));
             }
         }
-
         return commands;
     }
 }
