Millis Function only returning Zero

Your claim "Millis Function only returning Zero" is obviously wrong.

void setup() {
  Serial.begin(115200);
}
void loop() {
  static uint32_t lastPrint;
  uint32_t topLoop = millis();
  if (topLoop - lastPrint >= 2000) {
    lastPrint = topLoop;
    Serial.println(topLoop);
  }
}
2000
4000
6000
8000
10000
12000
14000
16000
18000
20000