プログラムリストの見えている範囲だけで判断する限り、ビット演算結果を判定している部分が正しくないように思います。以下のようにしてみたらいかがでしょうか。(ちなみに、変数IDはBUTTON()の結果を代入している変数と理解して正しいですか?)
[誤] ID AND 1 → [正] (ID AND 1)!=0
[誤] ID AND 2 → [正] (ID AND 2)!=0
[誤] ID AND 4 → [正] (ID AND 4)!=0
[誤] ID AND 8 → [正] (ID AND 8)!=0
[誤] (ID AND 2)!=1 → [正] (ID AND 2)==0
[誤] (ID AND 4)!=1 → [正] (ID AND 4)==0
[誤] (ID AND 8)!=1 → [正] (ID AND 8)==0