There might be a bug somewhere.
After counting down to 0, the negative numbers get displayed as positive in the UI. It's a known issue but only affects display.
Now we just have to find out why there can be negative numbers for more than half an hour.
Shouldnt there be a check for that, like: if(expiration < 0) return swap;