You might want to look at implementing different game states to the overall game loop, so that you don't have to fit the logic for every possible state of the game into one monolithic Update() method. That's not a brief topic though, (and I suggest doing some googling on "managing multiple game states" even here in the forums).
As a rough explanation, when your game is playing, some variable somewhere should know that the game is in regular "play mode". That's a state, and update should only do stuff that's pertinent for "play mode" updates. Things like decrementing the timer and checking for "is time up yet", for example.
When the timer reaches zero, state should switch to "endgame mode", and then update calls should have a completely separate set of logic that makes more sense for the game during the post-play time period. Things like "was the high score good enough to put on the board" and "did the player press 'restart' ", for example.
However, in the interest of a quick solution for now, it sounds like "I already have it in a separate function and I call it where the rest of my [end] game logic goes" should result in only calling the score-comparison once. What does that code look like?