 
 void loop() {
   // deal with millis() rollover
-  /*
   if ( millis() < btn_debounce_timer ) {
     btn_debounce_timer = 0;
   }
-  */
   
   if ( btn_read(&sw1_on, SW1_PIN) || btn_read(&sw2_on, SW2_PIN) || curr_mode < 0 ) {
-    int new_mode = sw1_on?1:0 + sw2_on?2:0;
+    int new_mode = (sw1_on?1:0) + (sw2_on?2:0);
     switch (new_mode) {
       case 0:
         animation_mode = chaser;

    if ( *btn_dwn ) {
      btn_debounce_timer = millis();
      *btn_dwn = false;
      // digitalWrite(btn_pin, HIGH); // reset pullup resistor
      return true;
    }
  }

      }
      break;
    case 3:
      if ( btn_read(&red_btn_down, REDBTN_IN) && red_btn_down ) {
        rainbow_wheel_speed = rainbow_wheel_speed^1;
      }
      
      if ( btn_read(&grn_btn_down, GRNBTN_IN) && grn_btn_down ) {
        rainbow_wheel_speed = rainbow_wheel_speed^2;
      }
      
      if ( btn_read(&blu_btn_down, BLUBTN_IN) && blu_btn_down ) {
        rainbow_wheel_speed = rainbow_wheel_speed^4;
      }
      
      // Write status of bits out
      digitalWrite(REDBTN_OUT, ((rainbow_wheel_speed&1)!=0)?HIGH:LOW);
      digitalWrite(GRNBTN_OUT, ((rainbow_wheel_speed&2)!=0)?HIGH:LOW);
      digitalWrite(BLUBTN_OUT, ((rainbow_wheel_speed&4)!=0)?HIGH:LOW);
      
      break;
    default:
      // nothing
