I tend to believe it's a bug rather than a feature, because unlike $ifmatch and $filtered, the value of $readn doesn't reset after the routine ends.
This could lead to an interruption of scripts like:
while $read(file.txt, w, *wildcard*, $calc($readn + 1)) {
echo -a $ifmatch
}
Because if $readn has already got a value, the script might not start scanning the file at line 1, as it's supposed to when $readn is empty or equals to zero.