Index: src/org/openstreetmap/josm/actions/SimplifyWayAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/SimplifyWayAction.java	(revision 13537)
+++ src/org/openstreetmap/josm/actions/SimplifyWayAction.java	(working copy)
@@ -140,11 +140,14 @@
      * in order to simplify the way.
      */
     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 = 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;
         }
-        boolean isRequired = frequency > 1;
         if (!isRequired) {
             List<OsmPrimitive> parents = new LinkedList<>();
             parents.addAll(node.getReferrers());
@@ -151,9 +154,6 @@
             parents.remove(way);
             isRequired = !parents.isEmpty();
         }
-        if (!isRequired) {
-            isRequired = node.isTagged();
-        }
         return isRequired;
     }
 
@@ -210,6 +210,8 @@
             }
         }
 
+        if (newNodes.size() == w.getNodesCount()) return null;
+
         Set<Node> delNodes = new HashSet<>();
         delNodes.addAll(w.getNodes());
         delNodes.removeAll(newNodes);
