I wouldn't continually change the contents of your timer object, which means your timer needs continual maintenance. Instead, when you pause and unpause the timer, update the offset of your timer from the system timer.
There are a bunch of timer projects in the web site; the first one I found is here:
https://snap.berkeley.edu/snap/snap.html#present:Username=rdococ&ProjectName=Stopwatches&editMode&noRun
but it may be more complicated than you need because it allows for multiple timers.
So, change the name of your "TimeElapsed" variable to "TimeOffset" and start the timer by setting it equal to the value reported by TIMER. Change "LastUnpaused" to "LastPaused." Then, when pausing the timer, set LastPaused to TimeOffset; when unpausing, set TimeOffset to umm this takes some careful thinking, but I think it's
TimeOffset + (TIMER - LastPaused). Because when you want to know your timer value, you'll compute TIMER-TimeOffset, so pausing should increase the offset you'll later subtract from TIMER.
TL;DR: The values you store in your timer shouldn't be absolute times, but rather times relative to TIMER.