Das Unterprogramm sollte nicht in der Hauptschleife liegen, sonst wird das da auch nochmal mit ausgeführt. Und ein Return wenn nix zu returnen da ist, landet irgendwo im Nirvana/ Reset.
Also das Loop oberhalb einbauen.