diff --git a/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java b/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java
index 38c40dd11900dd74e0592f792a4b823c440ed784..6bfa468daa317102ca7b8af77d5bdd9b21a03c48 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java
@@ -275,6 +275,11 @@ class ExploratoryPeerSelector extends TunnelPeerSelector {
         if (uptime <= 11*60*1000) {
             failPct = 100 - MIN_NONFAILING_PCT;
         } else {
+            // If well connected or ff, don't pick from high cap
+            // even during congestion, because congestion starts from the top
+            if (active > 500 || ctx.netDb().floodfillEnabled())
+                return false;
+
             failPct = getExploratoryFailPercentage();
             //Log l = ctx.logManager().getLog(getClass());
             //if (l.shouldLog(Log.DEBUG))