               OCR5B = newOCR/2;
            }
         }
-        else if( temp != 0 ) //are we moving down?
+        else if( temp != 0 && currPosSP < currPosACT) //if we are moving down and we should be
         {
            if( currPosSP < ( currPosACT - stepIndex  )) //See if we have time to continue to speed up
            {

long thcCorrectInc = 1;
int FreqZero = 1212;
int incomingByte = 0;
long currPosACT = 0;
long currPosIN = 0;
long currPosSP = 0;
long thcOffset = 0;
boolean timer5ON = false;
int temp = 0;

            stepIndex = 0;
 	 
        }                
        else if( temp == 0 && currPosSP > currPosACT ) // if we are moving up and we should be
        {
           if( currPosSP > ( currPosACT + stepIndex )) //See if we have time to continue to speed up
           {
