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:
Code:

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.