Index: /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/MiddleNodesAction.java
===================================================================
--- /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/MiddleNodesAction.java	(revision 35467)
+++ /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/MiddleNodesAction.java	(revision 35468)
@@ -9,4 +9,5 @@
 import java.util.Collection;
 import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.Set;
 
@@ -44,10 +45,10 @@
         }
 
-        Set<Node> newNodes = new HashSet<>();
-        NodeWayUtils.addMiddle(selectedNodes, newNodes);
+        Set<Node> newSelectedNodes = new LinkedHashSet<>();
+        NodeWayUtils.addMiddle(selectedNodes, newSelectedNodes);
 
-        // select only newly found nodes
-        newNodes.removeAll(selectedNodes);
-        getLayerManager().getEditDataSet().addSelected(newNodes);
+        // make sure that selected nodes are in the wanted order (see #josm17258)
+        getLayerManager().getEditDataSet().clearSelection(newSelectedNodes);
+        getLayerManager().getEditDataSet().addSelected(newSelectedNodes);
     }
 
Index: /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/NodeWayUtils.java
===================================================================
--- /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/NodeWayUtils.java	(revision 35467)
+++ /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/NodeWayUtils.java	(revision 35468)
@@ -271,14 +271,16 @@
                 if (w.isClosed()) {
                     if ((i2-i1)*2 <= n) { // i1 ... i2
-                        for (int i = i1+1; i != i2; i++) {
+                        for (int i = i1; i != i2; i++) {
                             filteredAdd(newNodes, nodes.get(i));
                         }
+                        filteredAdd(newNodes, nodes.get(i2));
                     } else { // i2 ... n-1 0 1 ... i1
-                        for (int i = i2+1; i != i1; i = (i+1) % n) {
+                        for (int i = i2; i != i1; i = (i+1) % n) {
                             filteredAdd(newNodes, nodes.get(i));
                         }
+                        filteredAdd(newNodes, nodes.get(i1));
                     }
                 } else {
-                    for (int i = i1+1; i < i2; i++) {
+                    for (int i = i1; i <= i2; i++) {
                         filteredAdd(newNodes, nodes.get(i));
                     }
@@ -286,5 +288,5 @@
             }
         }
-        if (newNodes.isEmpty()) {
+        if (newNodes.size() <= 2) {
             new Notification(
                     tr("Please select two nodes connected by way!")
Index: /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectWayNodesAction.java
===================================================================
--- /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectWayNodesAction.java	(revision 35467)
+++ /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectWayNodesAction.java	(revision 35468)
@@ -8,5 +8,5 @@
 import java.awt.event.KeyEvent;
 import java.util.Collection;
-import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.Set;
 
@@ -39,5 +39,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        Set<Node> selectedNodes = new HashSet<>();
+        Set<Node> selectedNodes = new LinkedHashSet<>();
 
         for (OsmPrimitive p : getLayerManager().getEditDataSet().getSelected()) {
