Index: src/org/openstreetmap/josm/actions/UpdateDataAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/UpdateDataAction.java	(revision 1526)
+++ src/org/openstreetmap/josm/actions/UpdateDataAction.java	(working copy)
@@ -61,8 +61,11 @@
         }
 
         for(Area a : areas) {
-            if(a.isEmpty())
+            if(a.isEmpty()) {
+                // Remove it so that we don't download it again
+                //areas.remove(a);
                 continue;
+            }
             bboxCount++;
         }
 
@@ -82,7 +85,7 @@
         if(result != 1)
             return;
 
-        new DownloadOsmTaskList().download(false, areas);
+        new DownloadOsmTaskList().download(false, areas, bboxCount);
     }
 
 }
Index: src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTaskList.java
===================================================================
--- src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTaskList.java	(revision 1526)
+++ src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTaskList.java	(working copy)
@@ -31,8 +31,10 @@
      * Downloads a list of areas from the OSM Server
      * @param newLayer Set to true if all areas should be put into a single new layer
      * @param The List of Rectangle2D to download
+     * @param count The number of downloads that should occur. Will be equal or less 
+     * than rects.size()
      */
-    public void download(boolean newLayer, List<Rectangle2D> rects) {
+    public void download(boolean newLayer, List<Rectangle2D> rects, int count) {
         if(newLayer) {
             Layer l = new OsmDataLayer(new DataSet(), tr("Data Layer"), null);
             Main.main.addLayer(l);
@@ -41,10 +43,12 @@
 
         int i = 0;
         for(Rectangle2D td : rects) {
+            if(td.isEmpty())
+              continue;
             i++;
             DownloadTask dt = new DownloadOsmTask();
             dt.download(null, td.getMinY(), td.getMinX(), td.getMaxY(), td.getMaxX(), true,
-                    tr("Download {0} of {1} ({2} left)", i, rects.size(), rects.size()-i));
+                    tr("Download {0} of {1} ({2} left)", i, count, count-i));
             osmTasks.add(dt);
         }
 
@@ -58,13 +62,15 @@
      * Downloads a list of areas from the OSM Server
      * @param newLayer Set to true if all areas should be put into a single new layer
      * @param The Collection of Areas to download
+     * @param count The number of downloads that should occur. Will be equal or less 
+     * than rects.size()
      */
-    public void download(boolean newLayer, Collection<Area> areas) {
+    public void download(boolean newLayer, Collection<Area> areas, int count) {
         List<Rectangle2D> rects = new LinkedList<Rectangle2D>();
         for(Area a : areas)
             rects.add(a.getBounds2D());
 
-        download(newLayer, rects);
+        download(newLayer, rects, count);
     }
 
     /**
