diff --git a/router/java/src/net/i2p/router/StatisticsManager.java b/router/java/src/net/i2p/router/StatisticsManager.java
index 9293a6234a757a638992dd25e34a4ebb0c8034fa..df51e36b465d24cfd0e3c1a72c8dc95d0d72e4ad 100644
--- a/router/java/src/net/i2p/router/StatisticsManager.java
+++ b/router/java/src/net/i2p/router/StatisticsManager.java
@@ -139,12 +139,18 @@ public class StatisticsManager implements Service {
             
             //includeRate("tunnel.buildRequestTime", stats, new long[] { 10*60*1000 });
             long rate = 60*60*1000;
-            includeRate("tunnel.buildClientExpire", stats, new long[] { rate });
-            includeRate("tunnel.buildClientReject", stats, new long[] { rate });
-            includeRate("tunnel.buildClientSuccess", stats, new long[] { rate });
-            includeRate("tunnel.buildExploratoryExpire", stats, new long[] { rate });
-            includeRate("tunnel.buildExploratoryReject", stats, new long[] { rate });
-            includeRate("tunnel.buildExploratorySuccess", stats, new long[] { rate });
+            boolean commentOutIn076 = RouterVersion.VERSION.equals("0.7.5");
+            if (commentOutIn076) {
+                includeRate("tunnel.buildClientExpire", stats, new long[] { rate });
+                includeRate("tunnel.buildClientReject", stats, new long[] { rate });
+                includeRate("tunnel.buildClientSuccess", stats, new long[] { rate });
+                includeRate("tunnel.buildExploratoryExpire", stats, new long[] { rate });
+                includeRate("tunnel.buildExploratoryReject", stats, new long[] { rate });
+                includeRate("tunnel.buildExploratorySuccess", stats, new long[] { rate });
+            } else {
+                includeTunnelRates("Client", stats, rate);
+                includeTunnelRates("Exploratory", stats, rate);
+            }
             //includeRate("tunnel.rejectTimeout", stats, new long[] { 10*60*1000 });
             //includeRate("tunnel.rejectOverloaded", stats, new long[] { 10*60*1000 });
             //includeRate("tunnel.acceptLoad", stats, new long[] { 10*60*1000 });
@@ -223,6 +229,49 @@ public class StatisticsManager implements Service {
         return buf.toString();
     }
 
+    private static final String[] tunnelStats = { "Expire", "Reject", "Success" };
+
+    /**
+     *  Add tunnel build rates with some mods to hide absolute quantities
+     *  In particular, report counts normalized to 100 (i.e. a percentage)
+     */
+    private void includeTunnelRates(String tunnelType, Properties stats, long selectedPeriod) {
+        long totalEvents = 0;
+        for (String tunnelStat : tunnelStats) {
+            String rateName = "tunnel.build" + tunnelType + tunnelStat;
+            RateStat stat = _context.statManager().getRate(rateName);
+            if (stat == null) continue;
+            Rate curRate = stat.getRate(selectedPeriod);
+            if (curRate == null) continue;
+            totalEvents += curRate.getLastEventCount();
+        }
+        if (totalEvents <= 0)
+            return;
+        for (String tunnelStat : tunnelStats) {
+            String rateName = "tunnel.build" + tunnelType + tunnelStat;
+            RateStat stat = _context.statManager().getRate(rateName);
+            if (stat == null) continue;
+            Rate curRate = stat.getRate(selectedPeriod);
+            if (curRate == null) continue;
+            double fudgeQuantity = 100.0d * curRate.getLastEventCount() / totalEvents;
+            stats.setProperty("stat_" + rateName + '.' + getPeriod(curRate), renderRate(curRate, fudgeQuantity));
+        }
+    }
+    
+    private String renderRate(Rate rate, double fudgeQuantity) {
+        StringBuffer buf = new StringBuffer(128);
+        buf.append(num(rate.getAverageValue())).append(';');
+        buf.append(num(rate.getExtremeAverageValue())).append(';');
+        buf.append(pct(rate.getPercentageOfLifetimeValue())).append(';');
+        if (rate.getLifetimeTotalEventTime() > 0) {
+            // bah saturation
+            buf.append("0;0;0;0;");
+        }
+        long numPeriods = rate.getLifetimePeriods();
+        buf.append(num(fudgeQuantity)).append(';');
+        return buf.toString();
+    }
+
     /* report the same data for tx and rx, for enhanced anonymity */
     private void includeAverageThroughput(Properties stats) {
         RateStat sendRate = _context.statManager().getRate("bw.sendRate");