Iiniciar una secuencia numérica con un display de 7 segmentos con Arduino

Hola comunidad, quisiera preguntar como hago para hacer que al presionar un pushbutton se inicie una secuencia numérica del 0 al 9 y al presionar otro pushbutton se inicie otra secuencia del 9 al 0, sin importar la posición en la que la secuencia se encuentre, por ejemplo si se encuentra en el 4 (del 0 al 9), que se pase directo al 9 (del 9 al 0) y viceversa, si estoy en algún número del 9 al 0 que al presionar otro pushbutton se pase directo al 0 (del 0 al 9) para iniciar la secuencia, ya tengo el programa, y no es necesario seguir presionando el pushbutton para incrementar o decrementar la cuenta, el objetivo es que la cuenta sea automática

int a = 2;
int b = 3;
int c = 4;
int d = 5;
int e = 6;
int f = 7;
int g = 8;
int bs1 = 9;                           //bs1 = boton secuencia 1 (de 0 a 9)
int bs2 = 10;                          //bs2 = boton secuencia 2 (de 9 a 0)

void setup() {
  pinMode (a, OUTPUT);
  pinMode (b, OUTPUT);
  pinMode (c, OUTPUT);
  pinMode (d, OUTPUT);
  pinMode (e, OUTPUT);
  pinMode (f, OUTPUT);
  pinMode (g, OUTPUT);
  pinMode (bs1, INPUT);
  pinMode (bs2, INPUT);

}

void loop () {
  if (digitalWrite (bs1, HIGH))
  {
  //cero
  digitalWrite (a, LOW);
  digitalWrite (b, LOW);
  digitalWrite (c, LOW);
  digitalWrite (d, LOW);
  digitalWrite (e, LOW);
  digitalWrite (f, LOW);
  digitalWrite (g, HIGH);
  delay (1000);
  //uno
  digitalWrite (a, HIGH);
  digitalWrite (d, HIGH);
  digitalWrite (e, HIGH);
  digitalWrite (f, HIGH);
  delay (1000);
  //dos
  digitalWrite (a, LOW);
  digitalWrite (c, HIGH);
  digitalWrite (d, LOW);
  digitalWrite (e, LOW);
  digitalWrite (g, LOW);
  delay (1000);
  //tres
  digitalWrite (c, LOW);
  digitalWrite (e, HIGH);
  delay (1000);
  //cuatro
  digitalWrite (a, HIGH);
  digitalWrite (d, HIGH);
  digitalWrite (f, LOW);
  delay (1000);
  //cinco
  digitalWrite (a, LOW);
  digitalWrite (b, HIGH);
  digitalWrite (d, LOW);
  delay (1000);
  //seis
  digitalWrite (e, LOW);
  delay (1000);
  //siete
  digitalWrite (b, LOW);
  digitalWrite (d, HIGH);
  digitalWrite (e, HIGH);
  digitalWrite (f, HIGH);
  delay (1000);
  //ocho
  digitalWrite (d, LOW);
  digitalWrite (e, LOW);
  digitalWrite (f, LOW);
  delay (1000);
  //nueve
  digitalWrite (e, HIGH);
  delay (1000);
  }
  else{
  digitalWrite (a, HIGH);
  digitalWrite (b, HIGH);
  digitalWrite (c, HIGH);
  digitalWrite (d, HIGH);
  digitalWrite (e, HIGH);
  digitalWrite (f, HIGH);
  digitalWrite (g, HIGH);
  }
  if (digitalWrite (bs2, HIGH))
  {
   //nueve
  digitalWrite (a, LOW);
  digitalWrite (b, LOW);
  digitalWrite (c, LOW);
  digitalWrite (d, LOW);
  digitalWrite (e, HIGH);
  digitalWrite (f, LOW);
  digitalWrite (g, LOW);
  delay (1000);
  //ocho
  digitalWrite (e, LOW);
  delay (1000);
  //siete
  digitalWrite (d, HIGH);
  digitalWrite (e, HIGH);
  digitalWrite (f, HIGH);
  delay (1000);
  //seis
  digitalWrite (b, HIGH);
  digitalWrite (d, LOW);
  digitalWrite (e, LOW);
  digitalWrite (f, LOW);
  delay (1000);
  //cinco
  digitalWrite (e, HIGH);
  delay(1000);
  //cuatro
  digitalWrite (a, HIGH);
  digitalWrite (b, LOW);
  digitalWrite (d, HIGH);
  delay(1000);
  //tres
  digitalWrite (a, LOW);
  digitalWrite (d, LOW);
  digitalWrite (f, HIGH);
  delay (1000);
  //dos
  digitalWrite (c, HIGH);
  digitalWrite (e, LOW);
  delay (1000);
  //uno
  digitalWrite (a, HIGH);
  digitalWrite (c, LOW);
  digitalWrite (d, HIGH);
  digitalWrite (e, HIGH);
  digitalWrite (g, HIGH);
  delay (1000);
  //cero
  digitalWrite (a, LOW);
  digitalWrite (d, LOW);
  digitalWrite (e, LOW);
  digitalWrite (f, LOW);
  delay (1000); 
    
  }
}

*Nota:
Estoy utilizando un display de 7 segmentos de ánodo común, por eso se iluminan en estado LOW y se apagan en HIGH

*Nota2:
estoy al tanto de que el if esta mal implementado, por eso quiero que me ayuden, modificando mi programa

Versión simple.
crea dos subrutinas que hagan lo que quieres, de 0 a 9 y de 9 a 0
Asi que duplica e invierte lo que ya tienes.
Llama a una con un nombre digamos ascendente y la otra descendente

Luego solo ocupate de detectar el pushbutton. Esta en el IDE, esta en los tutoriales, esta en documentación =>indice de temas tutoriales=> Clases de youtube

Google Arduino pusbutton y tendras MILES de ejemplos.

Aprende como se lee un boton y como controlar que haga una cosa u otra, para lo que necesitas cambar una variable.
Cuando lo presiones, la variable que antes estaba en 0 la pasas a 1 y cuando presionas de nuevo de 1 pasa a 0.
0 responde a ascendente y 1 a descendente.

Trabajo terminado!!

Ahora a estudiar cómo hacerlo