problema con semáforo aleatorio

Hola tengo el siguiente problema estoy programando un semáforo para revisión de personal aleatoria el cual al estar en espera se encuentra encendida la luz naranja en caso de que se presione el botón se apaga la luz naranja y puede suceder que se active la luz verde para dar el paso o la luz roja para revisión esto esta hecho con un comando random y ademas se hace una comparación entre estado del botón y el valor de random. el problema que tengo es que el led rojo jamas se apaga y solo hace el cambio entre el led verde y naranjo y tampoco funciona eso adjunto el código. por su atención muchas gracias.

const int buttonPin = 2;
const int ROJO = 13;
const int NARANJO = 12;
const int VERDE = 11;
int num = 0;

// variables will change:
int buttonState = 0;

void setup() {

pinMode(ROJO, OUTPUT);
pinMode(NARANJO, OUTPUT);
pinMode(VERDE, OUTPUT);

pinMode(buttonPin, INPUT);
Serial.begin(9600);

}

void loop() {

buttonState = digitalRead(buttonPin);
delay(100);
Serial.println(num);

if (buttonState == 1){

num=random(1,10);
}
if (buttonState == 1 && num == 2){ // se preciona y es igual a 2
digitalWrite(ROJO, HIGH);
digitalWrite(NARANJO, LOW);
digitalWrite(VERDE, LOW);
delay(2000);
}
if (buttonState == 1 && num != 2){ // se preciona y no es igual a 2

digitalWrite(ROJO, LOW );
digitalWrite(NARANJO, LOW);
digitalWrite(VERDE, HIGH);
delay(2000);
}
else{

digitalWrite(ROJO, LOW);
digitalWrite(NARANJO, HIGH);
digitalWrite(VERDE, LOW);
delay(2000);

}
}