Thanks to your comment, I went back and cached the haste calculation. Before it was just simple multiplication so I didn’t bother, but now it uses a square root, so this should avoid those more expensive operations. I also made it show the exact time needed now.
As for the mode swap issue, I wasn’t able to reproduce that, but I’ll keep an eye on it!