Calculate in Seconds not Frames?

if (reloadTimer) {
reloadTimer -= Time.deltaTime;
}
if (coolTimer) {
coolTimer -= Time.deltaTime;
}

The problem is that the values don’t stop at zero.

EDIT: Now that you completely changed the question, this answer is useless. But will leave it here anyway…

Integer if that is what you are doing. But that bases it off of the fps, not actual time. Maybe something like this: Count Down Timer. - Questions & Answers - Unity Discussions if you want accuracy.

Okay, a possible problem here is that Time.deltaTime won’t necessarily land you on 0. It can, but it’s far more likely to jump right past 0 to a negative number. Try this:

if (reloadTimer) {
   reloadTimer -= Time.deltaTime;
   if(reloadTimer < 0.0f)
   {
       reloadTimer = 0.0f;
   }
}
if (coolTimer) {
   coolTimer -= Time.deltaTime;
   if(coolTimer < 0.0f)
   {
       coolTimer = 0.0f;
   }
}