Index: /trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java	(revision 13539)
+++ /trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java	(revision 13540)
@@ -141,9 +141,12 @@
      */
     protected static boolean isRequiredNode(Way way, Node node) {
-        int frequency = Collections.frequency(way.getNodes(), node);
-        if ((way.getNode(0) == node) && (way.getNode(way.getNodesCount()-1) == node)) {
-            frequency = frequency - 1; // closed way closing node counted only once
-        }
-        boolean isRequired = frequency > 1;
+        boolean isRequired = node.isTagged();
+        if (!isRequired) {
+            int frequency = Collections.frequency(way.getNodes(), node);
+            if ((way.getNode(0) == node) && (way.getNode(way.getNodesCount()-1) == node)) {
+                frequency = frequency - 1; // closed way closing node counted only once
+            }
+            isRequired = frequency > 1;
+        }
         if (!isRequired) {
             List<OsmPrimitive> parents = new LinkedList<>();
@@ -151,7 +154,4 @@
             parents.remove(way);
             isRequired = !parents.isEmpty();
-        }
-        if (!isRequired) {
-            isRequired = node.isTagged();
         }
         return isRequired;
@@ -210,4 +210,6 @@
             }
         }
+
+        if (newNodes.size() == w.getNodesCount()) return null;
 
         Set<Node> delNodes = new HashSet<>();
