diff --git a/cowsayeternal b/cowsayeternal
index f942c9c..e1d06bf 100755
--- a/cowsayeternal
+++ b/cowsayeternal
@@ -4,21 +4,27 @@ printf "Writing cows to temporary file \"%s\"\\n" \
 	"$cowsaidfile"
 cowsay "E T E R N A L" > "$cowsaidfile"
 trap_exit() {
+	# kill "$cowthreadpid" > /dev/null 2>&1
+	wait "$cowthreadpid"
 	printf "\\n"
 	cat "$cowsaidfile"
 	rm "$cowsaidfile"
 }
 trap trap_exit EXIT
-iterations=1
+# Cow writing thread
+(
 while true; do
 	# Shut up shellcheck; that's the whole point. cowsay does a full read
 	# before it writes back to the file anyway.
 	# shellcheck disable=2094
 	cowsay -n < "$cowsaidfile" 1<> "$cowsaidfile"
-	iterations=$(( iterations + 1 ))
+done
+) &
+cowthreadpid=$!
+while true; do
 	# This line will only ever grow larger, so we don't need to clear it
 	# before overwriting it.
-	printf "\\r%s iterations, %s bytes of cowsay; hit Ctrl+C to dump them" \
-		"$iterations" \
+	printf "\\r%s bytes of cowsay; hit Ctrl+C to dump them" \
 		"$(stat --printf="%s" "$cowsaidfile")"
+	sleep 0.02
 done