 
 void leftBlink(int onDurationMillis, int offDurationMillis)
 {
+  checkIsTap();
+  
   selectLeftOn(OFF, ON, ON, ON);
   selectRightOn(OFF, OFF, OFF, OFF);
   delay(onDurationMillis);
-
-  checkIsTap();
   
   off();
   delay(offDurationMillis);

  selectLeftOn(ON, ON, OFF, ON);
  selectRightOn(ON, ON, ON, OFF);
  delay(durationMillis);

  checkIsTap();
  
  selectLeftOn(ON, ON, ON, ON);
  selectRightOn(ON, ON, ON, OFF);

// IIIb. Tap Logic Functions

void checkIsTap()
{   
  if(flashCount > 0)  
  {    
    if( (digitalRead(RIGHT_SIGNAL_INPUT) == 0) )    
    {      
      isRightTap = false;      
      resetFlashCount();    
    }    
    else if( (digitalRead(LEFT_SIGNAL_INPUT) == 0) )    
    {      
      isLeftTap = false;      
      resetFlashCount();    
    }  
  }  
  else  
  {      
    if( (digitalRead(RIGHT_SIGNAL_INPUT) == 0) )      
      isRightTap = true;    
    else if( (digitalRead(LEFT_SIGNAL_INPUT) == 0) )      
      isLeftTap = true;  
  }
}

void updateTapControl()
{  
  flashCount++;      
  if( (flashCount > MAX_REPEAT_ON_TAP) and (isRightTap) )  
  {    
    isRightTap = false;    
    resetFlashCount();  
  }  
  else if( (flashCount > MAX_REPEAT_ON_TAP) and (isLeftTap) )  
  {    
    isLeftTap = false;    
    resetFlashCount();  
  }
}

void resetFlashCount()
