Try this for the flashing:
void setSignals()
{
for (byte n = 0; n < numSignals; n ++)
{
digitalWrite(signalPin[n][green], LOW); // set all colours off
digitalWrite(signalPin[n][yellow], LOW);
digitalWrite(signalPin[n][red], LOW);
if(colourOfSignal[n]==flred)
{
digitalWrite(signalPin[n][red], flash);
}
else
{
digitalWrite(signalPin[n][colourOfSignal[n]], HIGH); // set one colour on
}
}
}
You will need to set flred to some other value, 3 perhaps. At the moment it's the same as red.