Index: trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java	(revision 4216)
+++ trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java	(revision 4217)
@@ -300,5 +300,5 @@
         progressMonitor.subTask(tr("Downloading OSM data..."));
         try {
-            DataSet loaded = OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
+            DataSet loaded = OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(pkg.size(), false));
             rememberNodesOfIncompleteWaysToLoad(loaded);
             merge(loaded);
@@ -324,5 +324,5 @@
         progressMonitor.subTask(tr("Downloading OSM data..."));
         try {
-            DataSet loaded = OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
+            DataSet loaded = OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(1, false));
             rememberNodesOfIncompleteWaysToLoad(loaded);
             merge(loaded);
@@ -404,9 +404,10 @@
         case RELATION:  msg = tr("Fetching a package of relations from ''{0}''", OsmApi.getOsmApi().getBaseUrl()); break;
         }
-        progressMonitor.indeterminateSubTask(msg);
+        progressMonitor.setTicksCount(ids.size());
+        progressMonitor.setTicks(0);
         Set<Long> toFetch = new HashSet<Long>(ids);
-        toFetch.addAll(ids);
         while(! toFetch.isEmpty() && !isCanceled()) {
             Set<Long> pkg = extractIdPackage(toFetch);
+            progressMonitor.subTask(msg + "... " + progressMonitor.getTicks() + "/" + progressMonitor.getTicksCount());
             try {
                 multiGetIdPackage(type, pkg, progressMonitor);
