何度も顔を出して申し訳ない。自分の方のスクリプトを弄ってみて原因判明。

textgosubで飛んだルーチン内ではセーブ準備はされない(されても無視?)模様です。
よってtextgosub内でsaveon/offしてもセーブ位置には影響しないようです。
つまりルーチン外で一度セーブ情報を準備させる必要がありますね。
pretextgosub内については未検証。ではいい加減消えます。