Countdown randomly stucks at 0:00

Hello, im having a weird issue with my game, the countdown randomly stucks at 0:00, are there any ways to fix it?

Minutes.Value = 8
Seconds.Value = 0
TimerSpeed.Value = 1
MultiplierVisible.Value = false
Multiplies.Value = 1
NewTower()
debounce = true
while true do
	if Minutes and Seconds and TimerSpeed and Tower and Stages then
		repeat
			if Seconds.Value <= 9 then
				TimerTag.Value = tostring(Minutes.Value)..":0"..tostring(Seconds.Value)
			else
				TimerTag.Value = tostring(Minutes.Value)..":"..tostring(Seconds.Value)
			end
			if Seconds.Value <= 0 then
				Minutes.Value = Minutes.Value - 1
				Seconds.Value = 59
			else
				Seconds.Value = Seconds.Value - 1
			end
			wait(TimerSpeed.Value)
		until Minutes.Value <= 0 and Seconds.Value <= 0
		if Minutes.Value <= 0 and Seconds.Value <= 0 then
			TimerTag.Value = "0:00"
		end
		wait(TimerSpeed.Value)
		for i, v in pairs(Players:GetChildren()) do
			if v.Character:FindFirstChild("Win") then
				v.Character.Win:Destroy()
			end
		end
	end
	Tower:ClearAllChildren()
	Minutes.Value = 8
	Seconds.Value = 0
	TimerSpeed.Value = 1
	MultiplierVisible.Value = false
	Multiplies.Value = 1
	NewTower()
	for i, v in pairs(Players:GetChildren()) do
		v.Character.Torso.CFrame = WinTp.CFrame
	end
	for i, v in pairs(MutatorsFolder:GetChildren()) do
		v.Value = false
	end
end