   delay(250);
   if(currentX < UPPERBOUND_X / 2) requestedX = 0;
   else requestedX = UPPERBOUND_X - 1;
+  if(currentY < UPPERBOUND_Y / 2) requestedY = 0;
+  else requestedY = UPPERBOUND_Y - 1;
+  requestedR = 0;
   MoveXYR();  
   
 }

      {
        digitalWrite(R_STEP_PIN, LOW);
        currentR += rDir;
        currentR = (currentR + UPPERBOUND_R) % UPPERBOUND_R; //Since 0 == UPPERBOUND_R
      }
    
      if(abs(currentX-requestedX) < SLOWSTEP) delayMicroseconds(MICRODELAY*(abs(currentX-requestedX)*((1.0-2.0)/SLOWSTEP)+SLOWRATE));
      else if(speedUp < SLOWSTEP) delayMicroseconds(MICRODELAY*(speedUp*((1.0-2.0)/SLOWSTEP)+SLOWRATE));
      else delayMicroseconds(MICRODELAY);


  int val;
  int count = 1000;
  
  while(Serial.available()) Serial.read(); //Clear buffer
  
  while(Serial.available() <= 0 && !userControl) //Will loop forever until confirmation from PC
  { 
