Index: /trunk/src/org/openstreetmap/josm/actions/UpdateDataAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UpdateDataAction.java	(revision 2941)
+++ /trunk/src/org/openstreetmap/josm/actions/UpdateDataAction.java	(revision 2942)
@@ -2,6 +2,6 @@
 package org.openstreetmap.josm.actions;
 
+import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 import static org.openstreetmap.josm.tools.I18n.tr;
-import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
 
 import java.awt.event.ActionEvent;
@@ -51,8 +51,7 @@
             return;
 
-        int bboxCount = 0;
         List<Area> areas = new ArrayList<Area>();
         for(DataSource ds : getEditLayer().data.dataSources) {
-            areas.add(new Area(ds.bounds.asRect()));
+            areas.add(new Area(ds.bounds.getRoundedToOsmPrecision().asRect()));
         }
 
@@ -73,12 +72,13 @@
         }
 
+        List<Area> areasToDownload = new ArrayList<Area>();
         for(Area a : areas) {
             if(a.isEmpty()) {
                 continue;
             }
-            bboxCount++;
+            areasToDownload.add(a);
         }
 
-        if(bboxCount == 0) {
+        if(areasToDownload.isEmpty()) {
             // no bounds defined in the dataset? we update all primitives in the data set
             // using a series of multi fetch requests
@@ -89,5 +89,5 @@
             //
             final PleaseWaitProgressMonitor monitor = new PleaseWaitProgressMonitor(tr("Download data"));
-            final Future<?> future = new DownloadOsmTaskList().download(false /* no new layer */, areas, monitor);
+            final Future<?> future = new DownloadOsmTaskList().download(false /* no new layer */, areasToDownload, monitor);
             Main.worker.submit(
                     new Runnable() {
Index: /trunk/src/org/openstreetmap/josm/data/Bounds.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/Bounds.java	(revision 2941)
+++ /trunk/src/org/openstreetmap/josm/data/Bounds.java	(revision 2942)
@@ -241,3 +241,17 @@
     }
 
+    /**
+     * Returns a clone of this Bounds, rounded to OSM precisions, i.e. to
+     * LatLon.MAX_SERVER_PRECISION
+     *
+     * @return a clone of this Bounds
+     */
+    public Bounds getRoundedToOsmPrecision() {
+        return new Bounds(
+                Math.round(minLat / LatLon.MAX_SERVER_PRECISION) * LatLon.MAX_SERVER_PRECISION,
+                Math.round(minLon / LatLon.MAX_SERVER_PRECISION) * LatLon.MAX_SERVER_PRECISION,
+                Math.round(maxLat / LatLon.MAX_SERVER_PRECISION) * LatLon.MAX_SERVER_PRECISION,
+                Math.round(maxLon / LatLon.MAX_SERVER_PRECISION) * LatLon.MAX_SERVER_PRECISION
+        );
+    }
 }
