0じゃないときに以前の値(Y)に戻しているみたいなので、それは正しい動作じゃないんですか?