i spent the whole day today looking for my bugs . . but
But you didn't once use Tools + Auto Format to fix the indenting. You didn't once think that putting each { on a new line would help visualize the code structure.
Blank lines between functions are useful. Blank lines in functions are less useful. Starting a function with a blank line never is useful.
if( currentTimer >= (timerLast + timerRate) ){
Adding time variables is not a good idea. now minus then...
Mixing millis() and delay() in the same code is rarely a good idea.