diff --git a/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java b/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java
index 81c976b98a595c01b2edba3efd471d2e1dd1000d..5cc606b037fa70b944aef7b9e1b2650d22d7fb7c 100644
--- a/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java
+++ b/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java
@@ -457,6 +457,8 @@ class OutboundMessageFragments {
             if (_log.shouldDebug())
                 _log.debug("Building packet for " + next + " to " + peer);
             int curTotalDataSize = state.fragmentSize(next.num);
+            if (next.num > 0 && peer.getVersion() > 1)
+                curTotalDataSize += SSU2Util.DATA_FOLLOWON_EXTRA_SIZE;
             // now stuff in more fragments if they fit
             if (i +1 < toSend.size()) {
                 int maxAvail;
@@ -469,6 +471,8 @@ class OutboundMessageFragments {
                     for (int j = i + 1; j < toSend.size(); j++) {
                         next = toSend.get(j);
                         int nextDataSize = next.state.fragmentSize(next.num);
+                        if (next.num > 0 && peer.getVersion() > 1)
+                            nextDataSize += SSU2Util.DATA_FOLLOWON_EXTRA_SIZE;
                         //if (PacketBuilder.canFitAnotherFragment(peer, sendNext.size(), curTotalDataSize, nextDataSize)) {
                         //if (_builder.canFitAnotherFragment(peer, sendNext.size(), curTotalDataSize, nextDataSize)) {
                         if (nextDataSize <= maxAvail) {