Some changes to the logic behind timeout.

Made it so that whenever the thread goes to sleep, it will immediately
calculate what the user wants.

Also, whenever we get the current timeout, it performs the same
calculation. Therefore, we always have the correct information.

Issue #1 is still present and needs to be worked out.