diff --git a/util/spkmodem_recv/spkmodem-recv.c b/util/spkmodem_recv/spkmodem-recv.c
index 0e98d8841ee5f0d19210bf189010b1e450ddd4a3..ae0b03d5d19f526dcc768f661e312d7ca8a39533 100644
--- a/util/spkmodem_recv/spkmodem-recv.c
+++ b/util/spkmodem_recv/spkmodem-recv.c
@@ -27,54 +27,60 @@ int amplitude = 0;
 int lp = 0;
 
 void read_sample(void);
+void print_chars(void);
 
 int
 main(int argc, char *argv[])
 {
-	int ascii_bit = 7;
-	char ascii = 0;
-	int i;
-	int llp = 0;
-
 	(void)argc; (void)argv;
 
-	while (!feof(stdin)) {
-		if (lp > 3 * SAMPLES_PER_FRAME) {
-			ascii_bit = 7;
-			ascii = 0;
-			lp = 0;
-			llp++;
-		}
-		if (llp == FLUSH_TIMEOUT)
-			fflush(stdout);
+	while (!feof(stdin))
+		print_chars();
+
+	return 0;
+}
+
+void
+print_chars(void)
+{
+	static int ascii_bit = 7;
+	static char ascii = 0;
+	static int llp = 0;
 
-		if (f2 <= FREQ_SEP_MIN || f2 >= FREQ_SEP_MAX
-				|| f1 <= FREQ_DATA_MIN || f1 >= FREQ_DATA_MAX) {
-			read_sample();
-			continue;
-		}
+	if (lp > 3 * SAMPLES_PER_FRAME) {
+		ascii_bit = 7;
+		ascii = 0;
+		lp = 0;
+		llp++;
+	}
+	if (llp == FLUSH_TIMEOUT)
+		fflush(stdout);
+
+	if (f2 <= FREQ_SEP_MIN || f2 >= FREQ_SEP_MAX
+			|| f1 <= FREQ_DATA_MIN || f1 >= FREQ_DATA_MAX) {
+		read_sample();
+		return;
+	}
 #if DEBUG
-		printf ("%d %d %d @%d\n", f1, f2, FREQ_DATA_THRESHOLD,
-				ftell(stdin) - sizeof(frame));
+	printf ("%d %d %d @%d\n", f1, f2, FREQ_DATA_THRESHOLD,
+			ftell(stdin) - sizeof(frame));
 #endif
-		if (f1 < FREQ_DATA_THRESHOLD)
-			ascii |= (1 << ascii_bit);
-		ascii_bit--;
-		if (ascii_bit < 0) {
+	if (f1 < FREQ_DATA_THRESHOLD)
+		ascii |= (1 << ascii_bit);
+	ascii_bit--;
+	if (ascii_bit < 0) {
 #if DEBUG
-			printf("<%c, %x>", ascii, ascii);
+		printf("<%c, %x>", ascii, ascii);
 #else
-			printf("%c", ascii);
+		printf("%c", ascii);
 #endif
-			ascii_bit = 7;
-			ascii = 0;
-		}
-		lp = 0;
-		llp = 0;
-		for (i = 0; i < SAMPLES_PER_FRAME; i++)
-			read_sample();
+		ascii_bit = 7;
+		ascii = 0;
 	}
-	return 0;
+	lp = 0;
+	llp = 0;
+	for (int i = 0; i < SAMPLES_PER_FRAME; i++)
+		read_sample();
 }
 
 void