change the "%X" in prompt_time() to "%T", because %X is based on local time so even if $BULLETTRAIN_TIME_12HR is false, the time would be in 12hr format because of the local. The %T forces it in 24hr format whatever your zone is.