Dual 7 segment counter

Hi, I've been trying to get two 7 segments to count up to 99 when I have an digital switch input. Currently I have adapted a 0-9 counter to include a second LED 7 segment. I thought if I could delay the second 7 segment turning on, then it would appear as if they were both on at the same time, however at the moment, one turns on and automatically turns off. So instead of getting the number 10, the left LED flashes '1' then the right turns on 0....any suggestions? I'm relatively new to this.....

// Seven-segment LED Display
// Common Cathode pins 3 and 8

//   G F + A B
//   | | | | |   -> pins and segments they control
//   ---------
//  F|   A   |B
//   |---G---|   -> segments
//  E|   D   |C
//   ---------
//   | | | | |   -> pins and segments they control
//   E D + C DP

// Segments that make each number when lit:
// 0 => ABCDEF
// 1 => BC
// 2 => ABDEG
// 3 => ABCDG
// 4 => BCFG
// 5 => ACDFG
// 6 => ACDEFG
// 7 => ABC
// 8 => ABCDEFG
// 9 => ABCDFG

// Arduino digital pins used to light up
// corresponding segments on the LED display
#define A 7
#define B 8
#define C 4
#define D 3
#define E 2
#define F 6
#define G 5 
#define gnd2 9
#define gnd1 10

// Pushbutton connected to pin 13
#define BUTTON 13

// Common cathode;
// on when pin is high
// and off when pin is low
#define OFF LOW
#define ON HIGH

int count = 0; // current display count
int val = 0;   // digital input from button

void setup() {
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(E, OUTPUT);
  pinMode(F, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(BUTTON, INPUT);
  pinMode(gnd1,OUTPUT);
  pinMode(gnd2, OUTPUT);
  
  zero();
}

void loop() {
  val = digitalRead(BUTTON);
  if (val == HIGH) {
    count++;
    delay(400);
    switch (count) {
      case 0:
        zero();
        break;
      case 1:
        one();
        break;
      case 2:
        two();
        break;
      case 3:
        three();
        break;
      case 4:
        four();
        break;
      case 5:
        five();
        break;
      case 6:
        six();
        break;
      case 7:
        seven();
        break;
      case 8:
        eight();
        break;
      case 9:
        nine();
        break;
      case 10: {
        ten();
        count = -1;
        break;
      }
    }
  }
}

// 0 => ABCGEF
void zero() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, ON);
  digitalWrite(F, ON);
  digitalWrite(G, OFF);
  digitalWrite(gnd2,ON);
}

// 1 => CG
void one() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, OFF);
  digitalWrite(gnd2,ON);
}

// 2 => ABDFG
void two() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, OFF);
  digitalWrite(D, ON);
  digitalWrite(E, ON);
  digitalWrite(F, OFF);
  digitalWrite(G, ON);
  digitalWrite(gnd2,ON);
}

// 3 => BCDFG
void three() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, ON);
  digitalWrite(gnd2,ON);
}

// 4 => CDEG
void four() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, ON);
  digitalWrite(G, ON);
  digitalWrite(gnd2,ON);
}

// 5 => BCDEF
void five() {
  digitalWrite(A, ON);
  digitalWrite(B, OFF);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, OFF);
  digitalWrite(F, ON);
  digitalWrite(G, ON);
  digitalWrite(gnd2,ON);
}

// 6 => ABCDEF
void six() {
  digitalWrite(A, ON);
  digitalWrite(B, OFF);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, ON);
  digitalWrite(F, ON);
  digitalWrite(G, ON);
  digitalWrite(gnd2,ON);
}

// 7 => CFG
void seven() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, OFF);
  digitalWrite(gnd2,ON);
}

// 8 => ABCDEFG
void eight() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, ON);
  digitalWrite(F, ON);
  digitalWrite(G, ON);
  digitalWrite(gnd2,ON);
}

// 9 => BCDEFG
void nine() {
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, OFF);
  digitalWrite(F, ON);
  digitalWrite(G, ON);
  digitalWrite(gnd2,ON);
}
void ten() {
  digitalWrite(A, OFF);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, OFF);
  digitalWrite(E, OFF);
  digitalWrite(F, OFF);
  digitalWrite(G, OFF);
  digitalWrite(gnd2,ON);
    digitalWrite(gnd1,OFF);
delay(300);  
  digitalWrite(A, ON);
  digitalWrite(B, ON);
  digitalWrite(C, ON);
  digitalWrite(D, ON);
  digitalWrite(E, ON);
  digitalWrite(F, ON);
  digitalWrite(G, OFF);
    digitalWrite(gnd2,OFF);
  digitalWrite(gnd1,ON );
}

Thanks

So instead of getting the number 10, the left LED flashes '1' then the right turns on 0....any suggestions?

That is what you wrote, the code is doing exactly what it is told. You need to keep on alternating between 1 on the left and 0 on the right until a new display pattern comes along.

Are you going to write the code like that all the way through to 99, that is not the way to do it.
You need to constantly alternate between the two displays and have what you want to put to those displays in a variable. Then only change what is being displayed when you have an input. Look up state machines and multiplexing.
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1267803389/2
Search this for two displays:-
http://www.arduino.cc/playground/Projects/ArduinoUsers