 #define MIN_BTM_ANGLE 30 // Minimum bottom servo angle
 #define NUM_OF_CUPS 5 // The number of cups at the bottom
 #define EACH_CUP_ANGLE_INTERVAL ((MAX_BTM_ANGLE - MIN_BTM_ANGLE) / NUM_OF_CUPS)
-  int btmAngle = MIN_BTM_ANGLE + EACH_CUP_ANGLE_INTERVAL * sortingResult;
+  int btmAngle = MIN_BTM_ANGLE + EACH_CUP_ANGLE_INTERVAL * 
+    (sortingResult == -1? int(NUM_OF_CUPS/2): sortingResult);
   servoBtm.write(btmAngle);
 }
 

        //Serial.println("Maximized colors:");
        //best_color.print();

        if (F_CALIBRATING) {
          // If we are calibrating colors
          __calibrating(best_color);
        } else {

          int min_diff = C_ALLOWED_COLOR_VARIANCE;
          sortingResult = -1;
          for (int i = 0; i < sizeof(colorList) / 8; i++) {
            C_Color diff = best_color.compare(colorList[i]);
            int agg = diff.aggregate();
            if (agg < min_diff) {
              min_diff = agg;
              sortingResult = i;
            }
          }

        }

      }

      // Serial.println("Finish measuring.");
      isColorBeingMeasured = false;
      lastSkittleTime = millis();


    }
  }

  // printColors(r, g, b, c);


}

void updateColorView() {

      min_clear = colors.c;
      best_color = colors;
    }
    if (colors.c > C_HOLE_CLEAR) {
      best_color.maximize(); // Maximize color
      if (best_color.compare(C_COLOR_EMPTY).aggregate() < 16) {
        // If this is an empty hole.
        Serial.println("Empty hole");
