Index: applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/DrawBuildingAction.java
===================================================================
--- applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/DrawBuildingAction.java	(revision 35817)
+++ applications/editors/josm/plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/DrawBuildingAction.java	(revision 35818)
@@ -64,4 +64,6 @@
     private Point drawStartPos;
     private Point mousePos;
+    /** Force a reasonable dimension */
+    private static final double MIN_LEN_WIDTH = 1E-6;
 
     final transient Building building = new Building();
@@ -244,4 +246,6 @@
         if (isRectDrawing()) {
             building.setPlaceRect(p);
+            if (building.getLength() < MIN_LEN_WIDTH)
+                return Mode.Drawing;
             return shift ? Mode.DrawingAngFix : Mode.None;
         } else if (ToolSettings.Shape.CIRCLE == ToolSettings.getShape()) {
@@ -251,12 +255,14 @@
                 building.setPlace(p, ToolSettings.getWidth(), ToolSettings.getLenStep(), shift);
             }
+            if (building.getLength() < MIN_LEN_WIDTH)
+                return Mode.Drawing;
             MainApplication.getMap().statusLine.setDist(building.getLength());
-            this.nextMode = Mode.None;
-            return this.nextMode;
+            return Mode.None;
         } else {
             building.setPlace(p, ToolSettings.getWidth(), ToolSettings.getLenStep(), shift);
+            if (building.getLength() < MIN_LEN_WIDTH)
+                return Mode.Drawing;
             MainApplication.getMap().statusLine.setDist(building.getLength());
-            this.nextMode = ToolSettings.getWidth() == 0 ? Mode.DrawingWidth : Mode.None;
-            return this.nextMode;
+            return ToolSettings.getWidth() == 0 ? Mode.DrawingWidth : Mode.None;
         }
     }
@@ -264,6 +270,7 @@
     private Mode modeDrawingWidth() {
         building.setWidth(getEastNorth());
-        MainApplication.getMap().statusLine.setDist(Math.abs(building.getWidth()));
-        return Mode.None;
+        double width = Math.abs(building.getWidth());
+        MainApplication.getMap().statusLine.setDist(width);
+        return width < MIN_LEN_WIDTH ? Mode.DrawingWidth : Mode.None;
     }
 
