diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 8c2c4091e8c661faa72ddc50d1987cc53436f44a..5d3e29ca3a87038e77d85c09a243d07df75a3424 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -1512,12 +1512,12 @@ void output_thread(void* arg)
 				sem_trywait(&sbbs->outbuf.sem);
 
 			/* Check for spurious sem post... */
-			if(RingBufFull(&sbbs->outbuf)==0)
+			if((avail=RingBufFull(&sbbs->outbuf))==0)
 				continue;
 
 			/* Wait for full buffer or drain timeout */
 			if(sbbs->outbuf.highwater_mark) {
-				if(RingBufFull(&sbbs->outbuf)<sbbs->outbuf.highwater_mark)
+				if(avail<sbbs->outbuf.highwater_mark)
 					sem_trywait_block(&sbbs->outbuf.highwater_sem,startup->outbuf_drain_timeout);
 				else
 					sem_trywait(&sbbs->outbuf.highwater_sem);