Maybe you should write your own joystick input wrapper.
Psuedo-code
void UnpressJoy()
must_unpress = 1
void GetButton()
if must_unpress = 1
if button_pressed
return 0
if button_pressed = 0
must_unpress = 0
return 0
if button_pressed
return 1
if button_pressed = 0
return 0
Something like that. That way you don't ever have to really alter the Joystick variable, just check if the button is pressed, and then set your own unpress variable.