Index: /trunk/src/org/openstreetmap/josm/data/osm/Node.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/Node.java	(revision 5325)
+++ /trunk/src/org/openstreetmap/josm/data/osm/Node.java	(revision 5326)
@@ -178,5 +178,5 @@
     void setDataset(DataSet dataSet) {
         super.setDataset(dataSet);
-        if (!isIncomplete() && (getCoor() == null || getEastNorth() == null))
+        if (!isIncomplete() && isVisible() && (getCoor() == null || getEastNorth() == null))
             throw new DataIntegrityProblemException("Complete node with null coordinates: " + toString() + get3892DebugInfo());
     }
Index: /trunk/src/org/openstreetmap/josm/io/OsmReader.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 5325)
+++ /trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 5326)
@@ -178,5 +178,9 @@
     protected Node parseNode() throws XMLStreamException {
         NodeData nd = new NodeData();
-        nd.setCoor(new LatLon(Double.parseDouble(parser.getAttributeValue(null, "lat")), Double.parseDouble(parser.getAttributeValue(null, "lon"))));
+        String lat = parser.getAttributeValue(null, "lat");
+        String lon = parser.getAttributeValue(null, "lon");
+        if (lat != null && lon != null) {
+            nd.setCoor(new LatLon(Double.parseDouble(lat), Double.parseDouble(lon)));
+        }
         readCommon(nd);
         Node n = new Node(nd.getId(), nd.getVersion());
Index: /trunk/src/org/openstreetmap/josm/io/OsmWriter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmWriter.java	(revision 5325)
+++ /trunk/src/org/openstreetmap/josm/io/OsmWriter.java	(revision 5326)
@@ -136,5 +136,7 @@
         if (n.isIncomplete()) return;
         addCommon(n, "node");
-        out.print(" lat='"+n.getCoor().lat()+"' lon='"+n.getCoor().lon()+"'");
+        if (n.getCoor() != null) { 
+            out.print(" lat='"+n.getCoor().lat()+"' lon='"+n.getCoor().lon()+"'");
+        } 
         if (!withBody) {
             out.println("/>");
