Index: trunk/src/org/openstreetmap/josm/actions/DistributeAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DistributeAction.java	(revision 7826)
+++ trunk/src/org/openstreetmap/josm/actions/DistributeAction.java	(revision 7828)
@@ -155,5 +155,5 @@
         for (Iterator<Node> it = col.iterator(); it.hasNext();) {
             Node n = it.next();
-            if (n.getCoor() == null) {
+            if (!n.isLatLonKnown()) {
                 it.remove();
                 result.add(n);
Index: trunk/src/org/openstreetmap/josm/actions/SelectByInternalPointAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SelectByInternalPointAction.java	(revision 7826)
+++ trunk/src/org/openstreetmap/josm/actions/SelectByInternalPointAction.java	(revision 7828)
@@ -1,4 +1,9 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.actions;
+
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.TreeMap;
 
 import org.openstreetmap.josm.Main;
@@ -11,9 +16,4 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.tools.Geometry;
-
-import java.awt.event.ActionEvent;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.TreeMap;
 
 /**
@@ -72,5 +72,5 @@
 
     /**
-     * Select a polygon or multipolgon by an internal point.
+     * Select a polygon or multipolygon by an internal point.
      *
      * @param internalPoint the internal point.
Index: trunk/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java	(revision 7826)
+++ trunk/src/org/openstreetmap/josm/data/osm/DatasetConsistencyTest.java	(revision 7828)
@@ -92,5 +92,5 @@
         long startTime = System.currentTimeMillis();
         for (Node node : dataSet.getNodes()) {
-            if (!node.isIncomplete() && node.isVisible() && (node.getCoor() == null || node.getEastNorth() == null)) {
+            if (!node.isIncomplete() && node.isVisible() && !node.isLatLonKnown()) {
                 printError("COMPLETE WITHOUT COORDINATES", "%s is not incomplete but has null coordinates", node);
             }
Index: trunk/src/org/openstreetmap/josm/data/osm/Node.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Node.java	(revision 7826)
+++ trunk/src/org/openstreetmap/josm/data/osm/Node.java	(revision 7828)
@@ -35,5 +35,10 @@
     private double north = Double.NaN;
 
-    private boolean isLatLonKnown() {
+    /**
+     * Determines if this node has valid coordinates.
+     * @return {@code true} if this node has valid coordinates
+     * @since 7828
+     */
+    public final boolean isLatLonKnown() {
         return !Double.isNaN(lat) && !Double.isNaN(lon);
     }
@@ -198,5 +203,5 @@
     void setDataset(DataSet dataSet) {
         super.setDataset(dataSet);
-        if (!isIncomplete() && isVisible() && (getCoor() == null || getEastNorth() == null))
+        if (!isIncomplete() && isVisible() && !isLatLonKnown())
             throw new DataIntegrityProblemException("Complete node with null coordinates: " + toString());
     }
Index: trunk/src/org/openstreetmap/josm/data/osm/Way.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 7826)
+++ trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 7828)
@@ -601,5 +601,5 @@
             if (Main.pref.getBoolean("debug.checkNullCoor", true)) {
                 for (Node n: nodes) {
-                    if (n.isVisible() && !n.isIncomplete() && (n.getCoor() == null || n.getEastNorth() == null))
+                    if (n.isVisible() && !n.isIncomplete() && !n.isLatLonKnown())
                         throw new DataIntegrityProblemException("Complete visible node with null coordinates: " + toString(),
                                 "<html>" + tr("Complete node {0} with null coordinates in way {1}",
Index: trunk/src/org/openstreetmap/josm/tools/Geometry.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Geometry.java	(revision 7826)
+++ trunk/src/org/openstreetmap/josm/tools/Geometry.java	(revision 7828)
@@ -314,5 +314,5 @@
     /**
      * Finds the intersection of two lines of infinite length.
-     * 
+     *
      * @param p1 first point on first line
      * @param p2 second point on first line
@@ -328,5 +328,5 @@
         CheckParameterUtil.ensureValidCoordinates(p3, "p3");
         CheckParameterUtil.ensureValidCoordinates(p4, "p4");
-        
+
         if (!p1.isValid()) throw new IllegalArgumentException();
 
@@ -575,8 +575,16 @@
         Node oldPoint = polygonNodes.get(polygonNodes.size() - 1);
 
+        if (!oldPoint.isLatLonKnown()) {
+            return false;
+        }
+
         for (Node newPoint : polygonNodes) {
             //skip duplicate points
             if (newPoint.equals(oldPoint)) {
                 continue;
+            }
+
+            if (!newPoint.isLatLonKnown()) {
+                return false;
             }
 
@@ -733,5 +741,5 @@
             result -= 2 * Math.PI;
         }
-        
+
         return result;
     }
