Why isn't my clock keeping the right time?

Hmm okay, does this look right to you? It compiles cleanly, but everything starts at 0 and never advances:

void UCalendar::AdvanceClock(float DeltaTime){
	int tempSecond = clockSecond;
	int tempMinute = clockMinute;
	int tempHour = clockHour;
	int tempTime = totalTime;

	inGameTime += gameSecondsPerWorldSecond * DeltaTime;
	clockSecond = tempTime % 60;
	clockMinute = (tempTime - tempSecond) % 60;
	clockHour = (tempTime - tempSecond - tempMinute * 60) % 24;
}

I tried it with casting instead of using temporary variables, but for some reason it doesn’t like it when I do something like:

Cast<int32>(totalTime)