diff --git a/router/java/src/net/i2p/router/peermanager/PeerManager.java b/router/java/src/net/i2p/router/peermanager/PeerManager.java
index 1cc82a46e5b257c4342c0cb20011bac08899cb85..bf3564298aac90d497023ba0c62a9cd35879e7a6 100644
--- a/router/java/src/net/i2p/router/peermanager/PeerManager.java
+++ b/router/java/src/net/i2p/router/peermanager/PeerManager.java
@@ -89,14 +89,16 @@ class PeerManager {
             super(_context.simpleTimer2(), REORGANIZE_TIME);
         }
         public void timeReached() {
+            long start = System.currentTimeMillis();
             try {
                 _organizer.reorganize(true);
             } catch (Throwable t) {
                 _log.log(Log.CRIT, "Error evaluating profiles", t);
             }
+            long orgtime = System.currentTimeMillis() - start;
             long uptime = _context.router().getUptime();
             long delay;
-            if (uptime > 2*60*60*1000)
+            if (orgtime > 1000 || uptime > 2*60*60*1000)
                 delay = REORGANIZE_TIME_LONG;
             else if (uptime > 10*60*1000)
                 delay = REORGANIZE_TIME_MEDIUM;