Index: /trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 5988)
+++ /trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 5989)
@@ -153,12 +153,20 @@
      */
     public static Node selectTargetNode(Collection<Node> candidates) {
+        Node oldestNode = null;
         Node targetNode = null;
         Node lastNode = null;
         for (Node n : candidates) {
             if (!n.isNew()) {
-                if (targetNode == null) {
-                    targetNode = n;
-                } else if (n.getId() < targetNode.getId()) {
-                    targetNode = n;
+                // Among existing nodes, try to keep the oldest used one
+                if (!n.getReferrers().isEmpty()) {
+                    if (targetNode == null) {
+                        targetNode = n;
+                    } else if (n.getId() < targetNode.getId()) {
+                        targetNode = n;
+                    }
+                } else if (oldestNode == null) {
+                    oldestNode = n;
+                } else if (n.getId() < oldestNode.getId()) {
+                    oldestNode = n;
                 }
             }
@@ -166,5 +174,5 @@
         }
         if (targetNode == null) {
-            targetNode = lastNode;
+            targetNode = (oldestNode != null ? oldestNode : lastNode);
         }
         return targetNode;
