_timeLeft seems to be an uint32. This makes me wonder why it checks for <= 0 instead of == 0. I guess you assume _timeLeft is an int32 here?