Why don't both digits display at the same time?

This code is not meant to keep time so please ignore any references to hours.

My problem is that the segments 1-9 display perfectly. When the counter gets to 10, however, the “0” will display for about a second, then turns off as the “1” turns on. A second later, the “1” (in the tens column) turns off and the “1” in the ones column displays until the “1” in the tens column comes on. This cycle continues until the counter resets to “1”.

int DS_14 = 3;
int STCP_12 = 7;
int SHCP_11 = 4;

int Hr1 = 0; // ten digit for hours
int Hr2 = 1; // one digit for hours

int digit1 = 5; // tens digit for hours (HR1)
int digit2 = 6; // one digit for hours (Hr2)

int Digit[10] = {64, 121, 36, 48, 25, 18, 2, 120, 0, 24};

void setup() {
pinMode(STCP_12, OUTPUT);
pinMode(DS_14, OUTPUT);
pinMode(SHCP_11, OUTPUT);
pinMode(digit1, OUTPUT);
pinMode(digit2, OUTPUT);
Serial.begin(9600);
}
void loop() {
HrDisp();
delay(1000);
}

void HrDisp() { //Displays the hour

Hr2++;

display1();
if (Hr2 == 10) { // Reset to 0 after counting for 9 hours.
Hr2 = 0;
Hr1++;
}
if (Hr1 == 1 and Hr2 == 3) { //13:00 becomes 1:00
Hr1 = 0; // Resets hours ten digit to 0
Hr2 = 1;
}
digitalWrite(STCP_12, LOW);
shiftOut(DS_14, SHCP_11, MSBFIRST, Digit[Hr2]);
digitalWrite(STCP_12, HIGH);
delay(5);
if (Hr1 != 0) {
display2();
digitalWrite(STCP_12, LOW);
shiftOut(DS_14, SHCP_11, MSBFIRST, Digit[Hr1]);
digitalWrite(STCP_12, HIGH);
delay(5);
}
}
void display1()
{
digitalWrite(digit1, 1);
digitalWrite(digit2, 0);
}
void display2()
{
digitalWrite(digit1, 0);
digitalWrite(digit2, 1);
}

/// END ///

Thank you in advance,

Michael