Pattern[-1] ist immer '#0' und wird erst nach dem ersten Durchlauf inkrementiert.
Ich verstehe jetzt nicht warum das ein Problem sein sollte.
Das ist aber purer Zufall, dass im Speicher vor deiner
Pattern
Variable eine 0 steht. Es könnte dort auch nicht-reservierter Speicher (oder andere zufällige Daten) sein, dann kracht es.
Nach deiner Änderung funktioniert es nur mit exakt 2-stelligen Pattern. Schau mal in meinen Edit, da habe ich dir die Funktion mal 1 zu 1 übersetzt