diff --git a/src/sbbs3/zmodem.c b/src/sbbs3/zmodem.c
index 6284c5d54ab917deb796da246ad61ad8d9828ae0..5e0a5824ed923724673f45d9e4e8715426094ae9 100644
--- a/src/sbbs3/zmodem.c
+++ b/src/sbbs3/zmodem.c
@@ -268,7 +268,7 @@ zmodem_tx_hex_header(zmodem_t* zm, unsigned char * p)
 	 */
 
 	zmodem_tx_raw(zm, '\r');
-	zmodem_tx_raw(zm, '\n'|0x80);	/* FDSZ sends 0x8a instead of 0x0a */
+	zmodem_tx_raw(zm, '\n');	/* FDSZ sends 0x8a instead of 0x0a */
 
 	if(type!=ZACK && type!=ZFIN)
 		zmodem_tx_raw(zm, XON);
@@ -1204,7 +1204,9 @@ void zmodem_parse_zrinit(zmodem_t* zm)
 
 int zmodem_get_zrinit(zmodem_t* zm)
 {
-	unsigned char zrqinit_header[] = { ZRQINIT, 0, 0, 0, 0 };
+	unsigned char zrqinit_header[] = { ZRQINIT, /* ZF3: */0, 0, 0, /* ZF0: */0 };
+	/* Note: sz/dsz/fdsz sends 0x80 in ZF3 because it supports var-length headers. */
+	/* We do not, so we send 0x00, resulting in a CRC-16 value of 0x0000 as well. */
 
 	zmodem_tx_raw(zm,'r');
 	zmodem_tx_raw(zm,'z');