何度もすまん、マジ教えて

ゲームパッドの十字キーの上下を判別したいんだが、できない

みようみまねだがこんなリスト作った
while 1
b=button(0,-1,0)
if (b and #bid_up) then print "up"
if (b and #bid_down) then print "down"
vsync 1
wend

上を押したら「up」、下を押したら「down」と表示させたくてこう作ったんだけど
これだと上を押したら「down」と表示されてしまう
逆に下を押したら何も表示されない

ためしに、print format$("%06d",#bid_up)ってやってみたら「0」と、
print format$("%06d",#bid_down)ってやってみたら「1」と表示された
またbを表示させると、上を押すと「1」、下を押すと「2」と表示された

button()で機能IDに-1を指定するとこのbには、上が押されたら32bitの最下位2ビットに01が
下が押されたら10が格納されてくるのだと思ってたけど、違うの?
この#btn_xxxってラベルはウソなの?

ゲームパッドはロジクールのF310でXinputモード、PiSTARTERの設定もパッドの種類は「0」の
Xinputにそろえてあるしそっちのテスト画面では上下もボタンも正しく認識してる

本当助けてマジ吐きそう死にたい