もしかして変数Dの値って表示してるスプライトの挙動だけから推察してません? メインループの終わりのWEND直前の行あたりに  PRINT D:WAIT 30 とでも書き足して、実際に変数Dの中身を確かめてみるのをお勧めしますけど。