Index: trunk/src/org/openstreetmap/josm/io/MirroredInputStream.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/MirroredInputStream.java	(revision 4127)
+++ trunk/src/org/openstreetmap/josm/io/MirroredInputStream.java	(revision 4128)
@@ -183,4 +183,5 @@
     private File checkLocal(URL url, String destDir, long maxTime) throws IOException {
         String prefKey = getPrefKey(url, destDir);
+        long age = 0L;
         File file = null;
         // FIXME: replace with normal getCollection after july 2011
@@ -195,5 +196,6 @@
                     maxTime = Main.pref.getInteger("mirror.maxtime", 7*24*60*60);
                 }
-                if (System.currentTimeMillis() - Long.parseLong(lp[0]) < maxTime*1000) {
+                age = System.currentTimeMillis() - Long.parseLong(lp[0]);
+                if (age < maxTime*1000) {
                     return file;
                 }
@@ -231,4 +233,12 @@
             Main.pref.putCollection(prefKey, Arrays.asList(new String[]
             {Long.toString(System.currentTimeMillis()), file.toString()}));
+        } catch (IOException e) {
+            if (age > maxTime*1000 && age < maxTime*1000*2) {
+                System.out.println(tr("Failed to load {0}, use cached file and retry next time: {1}",
+                url, e));
+                return file;
+            } else {
+                throw e;
+            }
         } finally {
             if (bis != null) {
