diff --git a/src/sexpots/sexpots.c b/src/sexpots/sexpots.c
index d22a37d589465f1f876870da8fdbe84af795d31e..e9af3a02448b5416c58376149fe168848fc8c2eb 100644
--- a/src/sexpots/sexpots.c
+++ b/src/sexpots/sexpots.c
@@ -613,12 +613,19 @@ BOOL modem_send(COM_HANDLE com_handle, const char* str)
 			if(ch!='^' && ch>='@')	/* ^^ to send an '^' char to the modem */
 				ch-='@';
 		}
-		if(!comWriteByte(com_handle,ch))
-			return FALSE;
+		if(!comWriteByte(com_handle,ch)) {
+			YIELD();
+			if(!comWriteByte(com_handle,ch))
+				return FALSE;
+		}
 	}
 	SLEEP(100);
 	comPurgeInput(com_handle);
-	return comWriteByte(com_handle, '\r');
+	if(!comWriteByte(com_handle, '\r')) {
+		YIELD();
+		return comWriteByte(com_handle, '\r');
+	}
+	return TRUE;
 }
 
 /****************************************************************************/