diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 634244b2624011faabd0baa623842d8306b90067..084618daf101f4026b009a85fcb57b93082dc9c5 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -2326,13 +2326,13 @@ void output_thread(void* arg)
 			}
 #endif
 #endif
-			sbbs->outbuf.highwater_mark=i;
 			lprintf(LOG_DEBUG,"Autotuning outbuf highwater mark to %d based on MSS",i);
-			mss=sbbs->outbuf.highwater_mark;
-			if(mss>IO_THREAD_BUF_SIZE) {
-				mss=IO_THREAD_BUF_SIZE;
+			if(i>IO_THREAD_BUF_SIZE) {
 				lprintf(LOG_DEBUG,"MSS (%d) is higher than IO_THREAD_BUF_SIZE (%d)",i,IO_THREAD_BUF_SIZE);
+				i=IO_THREAD_BUF_SIZE;
 			}
+			sbbs->outbuf.highwater_mark=i;
+			mss=sbbs->outbuf.highwater_mark;
 		}
 	}
 #endif