       
       if ( btn_read(&big_btn_down, BIGBTN_IN) ) { // big button pressed
         if ( big_btn_down ) {
-          dir_b = 5;
-          dir_r = 5;
-          dir_g = -5;
+          if ( dir_b == 5 && dir_r == 5 && dir_g == -5 ) {
+            dir_b = random(-10, 11);
+            dir_g = random(-10, 11);
+            dir_r = random(-10, 11);
+          } else {
+            dir_b = 5;
+            dir_r = 5;
+            dir_g = -5;
+          }
         }
       }
       break;


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;
    switch (new_mode) {
      case 0:
        animation_mode = chaser;

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