Index: src/org/openstreetmap/josm/data/coor/LatLon.java
===================================================================
--- src/org/openstreetmap/josm/data/coor/LatLon.java	(revision 2605)
+++ src/org/openstreetmap/josm/data/coor/LatLon.java	(working copy)
@ -99,7 +103,7 @@
      * 1 / {@link org.openstreetmap.josm.data.projection.Projection#MAX_SERVER_PRECISION MAX_SERVER_PRECISION}.
      */
     public boolean equalsEpsilon(LatLon other) {
-        final double p = 1/Projection.MAX_SERVER_PRECISION;
+        final double p = Projection.MAX_SERVER_PRECISION;
         return Math.abs(lat()-other.lat()) <= p && Math.abs(lon()-other.lon()) <= p;
     }
 
Index: src/org/openstreetmap/josm/data/osm/Node.java
===================================================================
--- src/org/openstreetmap/josm/data/osm/Node.java	(revision 2605)
+++ src/org/openstreetmap/josm/data/osm/Node.java	(working copy)
@@ -135,7 +135,9 @@
     @Override public NodeData save() {
         NodeData data = new NodeData();
         saveCommonAttributes(data);
-        data.setCoor(getCoor());
+        if (!isIncomplete()) {
+            data.setCoor(getCoor());
+        }
         return data;
     }
 
@@ -154,7 +156,7 @@
         if (coor == null && n.coor == null)
             return true;
         else if (coor != null && n.coor != null)
-            return coor.equals(n.coor);
+            return coor.equalsEpsilon(n.coor);
         else
             return false;
     }
Index: src/org/openstreetmap/josm/data/projection/Projection.java
===================================================================
--- src/org/openstreetmap/josm/data/projection/Projection.java	(revision 2605)
+++ src/org/openstreetmap/josm/data/projection/Projection.java	(working copy)
@@ -14,8 +14,9 @@
 public interface Projection {
     /**
      * Minimum difference in location to not be represented as the same position.
+     * The API returns 7 decimals.
      */
-    public static final double MAX_SERVER_PRECISION = 1e12;
+    public static final double MAX_SERVER_PRECISION = 5e-8;
 
     /**
      * List of all available projections.
Index: src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMergeModel.java
===================================================================
--- src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMergeModel.java	(revision 2605)
+++ src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMergeModel.java	(working copy)
@@ -325,7 +325,7 @@
         if (myCoords == null && theirCoords != null) return true;
         if (myCoords != null && theirCoords == null) return true;
         if (myCoords == null && theirCoords == null) return false;
-        return !myCoords.equals(theirCoords);
+        return !myCoords.equalsEpsilon(theirCoords);
     }
 
     /**
Index: src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java
===================================================================
--- src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java	(revision 2605)
+++ src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java	(working copy)
@@ -30,7 +30,7 @@
  *
  */
 public class PropertiesMerger extends JPanel implements Observer {
-    private static DecimalFormat COORD_FORMATTER = new DecimalFormat("###0.0000");
+    private static DecimalFormat COORD_FORMATTER = new DecimalFormat("###0.0000000");
 
     public final static Color BGCOLOR_NO_CONFLICT = new Color(234,234,234);
     public final static Color BGCOLOR_UNDECIDED = new Color(255,197,197);
