         }
 
         // if 15 seconds left on the timer, dump everything in 8
-        if(millis() > 105*ONE_SEC) {
+        if((millis() - startTime) > (unsigned int)(105*ONE_SEC)) {
             currState = BACKING_UP;
             returnToState = SEEKING_EXCHANGE;
             Backup(2, BACKWARD);

        sideServerBeacon.Clear();
        sideExchangeBeacon.Clear();
        TMRArd_InitTimer(CLEAR_BEACON_TIMER, BEACON_CLEAR_PERIOD);
        startTime = millis();
    }
    
    if (TMRArd_IsTimerExpired(ENDGAME_TIMER))
    {
        currState = WAITING_TO_END;
        turntable.Stop();
        drivetrain.Stop();
        presser.Rest();
    }

    // State dependent

    static State returnToState;
    static boolean isFirstRun = true;
    static int numCoinsMined = 0;
    static unsigned long startTime;
    static int numResetEndTimer = 0;
   // static int targetCoins;

    // Always do
