Index: trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 3595)
+++ trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 3596)
@@ -26,4 +26,5 @@
 import org.openstreetmap.josm.command.DeleteCommand;
 import org.openstreetmap.josm.command.SequenceCommand;
+import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -88,9 +89,19 @@
      */
     public static Node selectTargetLocationNode(LinkedHashSet<Node> candidates) {
-        Node targetNode = null;
-        for (Node n : candidates) { // pick last one
-            targetNode = n;
-        }
-        return targetNode;
+        if (! Main.pref.getBoolean("merge-nodes.average-location", false)) {
+            Node targetNode = null;
+            for (final Node n : candidates) { // pick last one
+                targetNode = n;
+            }
+            return targetNode;
+        }
+
+        double lat = 0, lon = 0;
+        for (final Node n : candidates) {
+            lat += n.getCoor().lat();
+            lon += n.getCoor().lon();
+        }
+
+        return new Node(new LatLon(lat / candidates.size(), lon / candidates.size()));
     }
 
