when and where does @callback get set a value? i am guessing that your problem is that that is not setting to the value if 0, if you call $scene = Scene_
Menu.new that will take you to the index point defined in the initialize method so im guessing that its going straight off of the else command
edit:
im guessing that your just wanting it to go straight back to the control option no matter what so change that section to this:
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($game_system.cancel_se)
# Switch to the Menu screen
$scene = Scene_Menu.new(INDEX VALUE)
end
INDEX VALUE should be changed to wherever in the index your wanting to go, just bear in mind it starts from 0 not 1