Index: trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 15885)
+++ trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java	(revision 15886)
@@ -686,22 +686,10 @@
 
         for (Way way : outerStartingWays) {
-            List<Way> splitWays = splitWayOnNodes(way, nodes);
-
-            // see #9599
-            if (!way.isNew() && splitWays.size() > 1) {
-                for (Way part : splitWays) {
-                    Node n = part.firstNode();
-                    Way old = oldestWayMap.get(n);
-                    if (old == null || old.getUniqueId() > way.getUniqueId()) {
-                        oldestWayMap.put(n, way);
-                    }
-                }
-            }
-
+            List<Way> splitWays = splitWayOnNodes(way, nodes, oldestWayMap);
             preparedWays.addAll(markWayInsideSide(splitWays, false));
         }
 
         for (Way way : innerStartingWays) {
-            List<Way> splitWays = splitWayOnNodes(way, nodes);
+            List<Way> splitWays = splitWayOnNodes(way, nodes, oldestWayMap);
             preparedWays.addAll(markWayInsideSide(splitWays, true));
         }
@@ -1126,7 +1114,8 @@
      * @param way way to split
      * @param nodes split points
+     * @param oldestWayMap  nodes from old ways (modified here)
      * @return list of split ways (or original way if no splitting is done).
      */
-    private List<Way> splitWayOnNodes(Way way, Set<Node> nodes) {
+    private List<Way> splitWayOnNodes(Way way, Set<Node> nodes, Map<Node, Way> oldestWayMap) {
 
         List<Way> result = new ArrayList<>();
@@ -1144,4 +1133,15 @@
                 result.add(split.getOriginalWay());
                 result.addAll(split.getNewWays());
+
+                // see #9599
+                if (!way.isNew() && result.size() > 1) {
+                    for (Way part : result) {
+                        Node n = part.firstNode();
+                        Way old = oldestWayMap.get(n);
+                        if (old == null || old.getUniqueId() > way.getUniqueId()) {
+                            oldestWayMap.put(n, way);
+                        }
+                    }
+                }
             }
         }
@@ -1150,5 +1150,4 @@
             result.add(way);
         }
-
         return result;
     }
