       }
       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

        strip.setPixelColor(anim_i, Wheel(((anim_i * 256 / strip.numPixels()) + anim_j) & 255));
      }
      strip.show();
      anim_j = (anim_j + 1) & 255;
      next_animation_time = now + 20;
      break;
      

    if ( *btn_dwn ) {
      btn_debounce_timer = millis();
      *btn_dwn = false;
      return true;
    }
  }
