Index: trunk/src/org/openstreetmap/josm/data/osm/BBox.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/BBox.java	(revision 3162)
+++ trunk/src/org/openstreetmap/josm/data/osm/BBox.java	(revision 3163)
@@ -46,4 +46,14 @@
             }
             add(coor);
+        }
+    }
+
+    public BBox(Node n) {
+        LatLon coor = n.getCoor();
+        if (coor == null) {
+            xmin = xmax = ymin = ymax = 0;
+        } else {
+            xmin = xmax = coor.lon();
+            ymin = ymax = coor.lat();
         }
     }
Index: trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 3162)
+++ trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 3163)
@@ -767,4 +767,5 @@
     private void reindexNode(Node node) {
         nodes.remove(node);
+        node.updatePosition();
         nodes.add(node);
         for (OsmPrimitive primitive: node.getReferrers()) {
Index: trunk/src/org/openstreetmap/josm/data/osm/Node.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Node.java	(revision 3162)
+++ trunk/src/org/openstreetmap/josm/data/osm/Node.java	(revision 3163)
@@ -15,4 +15,5 @@
 
     private CachedLatLon coor;
+    private BBox bbox;
 
     public final void setCoor(LatLon coor) {
@@ -186,13 +187,16 @@
     @Override
     public BBox getBBox() {
-        if (coor == null)
-            return new BBox(0, 0, 0, 0);
-        else
-            return new BBox(coor, coor);
+        if (getDataSet() == null)
+            return new BBox(this);
+        if (bbox == null) {
+            bbox = new BBox(this);
+        }
+        return new BBox(bbox);
     }
 
     @Override
     public void updatePosition() {
-        // Do nothing for now, but in future replace CachedLatLon with simple doubles and update precalculated EastNorth value here
+        bbox = new BBox(this);
+        // TODO: replace CachedLatLon with simple doubles and update precalculated EastNorth value here
     }
 
