     case B3W:
       if (b3.isReleased()&&b3t.isRunning()) {       //Did user tap B3?
         sked.setStartTime();                        //Set now as the start time & enable the daily composter autoRun
-        state=IDL;
+        doStartMotor();                             //And start an autorun sequence right now
       } else if (b3.isPressed()&&b3t.isExpired()) {  //Did user hold B3?
         audio.doBeep(FREQC);
-        sked.disable();                               //Disable autoRun schedule
-        state=B3W;                                    //Return to IDL later when user releases B3
+        sked.disable();                             //Yes, disable autoRun schedule
+        motor.stop();                               //Begin stopping the motor if it's running
+        state=DCL;                                  //Deceleraterating now
         DPRINT("~A");
       } else if (b3.isReleased()&&b3t.isExpired()) {
         state=IDL;                                    //Released button

        state=DCL;            //Decelerate to stop
      }

    //Ignore events until motor decels to a stop then become idle
    case DCL:
      if (motor.isStopped()) {
        DPRINT("stopped");



/**
 * Helper method to start the drum motor and enter the autorunning state
 */
void doStartMotor() {
        DPRINT("doStartMotor");
