Index: trunk/src/org/openstreetmap/josm/data/coor/LatLon.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/coor/LatLon.java	(revision 2611)
+++ trunk/src/org/openstreetmap/josm/data/coor/LatLon.java	(revision 2612)
@@ -2,10 +2,14 @@
 package org.openstreetmap.josm.data.coor;
 
+import static java.lang.Math.PI;
+import static java.lang.Math.asin;
+import static java.lang.Math.cos;
+import static java.lang.Math.sin;
+import static java.lang.Math.sqrt;
+import static java.lang.Math.toRadians;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.text.DecimalFormat;
 import java.text.NumberFormat;
-
-import static java.lang.Math.*;
 
 import org.openstreetmap.josm.Main;
@@ -100,5 +104,5 @@
      */
     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;
     }
@@ -132,7 +136,7 @@
         double sinHalfLon = sin(toRadians(other.lon() - this.lon()) / 2);
         double d = 2 * R * asin(
-                            sqrt(sinHalfLat*sinHalfLat + 
-                            cos(toRadians(this.lat()))*cos(toRadians(other.lat()))*sinHalfLon*sinHalfLon));
-        // For points opposite to each other on the sphere, 
+                sqrt(sinHalfLat*sinHalfLat +
+                        cos(toRadians(this.lat()))*cos(toRadians(other.lat()))*sinHalfLon*sinHalfLon));
+        // For points opposite to each other on the sphere,
         // rounding errors could make the argument of asin greater than 1
         // (This should almost never happen.)
Index: trunk/src/org/openstreetmap/josm/data/osm/Node.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Node.java	(revision 2611)
+++ trunk/src/org/openstreetmap/josm/data/osm/Node.java	(revision 2612)
@@ -136,5 +136,7 @@
         NodeData data = new NodeData();
         saveCommonAttributes(data);
-        data.setCoor(getCoor());
+        if (!isIncomplete()) {
+            data.setCoor(getCoor());
+        }
         return data;
     }
@@ -155,5 +157,5 @@
             return true;
         else if (coor != null && n.coor != null)
-            return coor.equals(n.coor);
+            return coor.equalsEpsilon(n.coor);
         else
             return false;
Index: trunk/src/org/openstreetmap/josm/data/projection/Projection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/projection/Projection.java	(revision 2611)
+++ trunk/src/org/openstreetmap/josm/data/projection/Projection.java	(revision 2612)
@@ -15,6 +15,7 @@
     /**
      * 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;
 
     /**
Index: trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMergeModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMergeModel.java	(revision 2611)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMergeModel.java	(revision 2612)
@@ -326,5 +326,5 @@
         if (myCoords != null && theirCoords == null) return true;
         if (myCoords == null && theirCoords == null) return false;
-        return !myCoords.equals(theirCoords);
+        return !myCoords.equalsEpsilon(theirCoords);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java	(revision 2611)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java	(revision 2612)
@@ -31,5 +31,5 @@
  */
 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);
