IFを通ったときにDを変更しているなら、その後、どこかでDを初期化していなければDの値は維持されますが、そういうことじゃないんですか?