diff --git a/ROM2/motors.c b/ROM2/motors.c
index 725c93e5d709c34bf87c69c71b7255c12dd156fa..e7cb6b50db87f90bf36d531d081b34f9e76e484f 100644
--- a/ROM2/motors.c
+++ b/ROM2/motors.c
@@ -93,16 +93,19 @@ bool is_motor(u8 slot) {
 	return motor_here(slot);
 }
 
-bool left_home(u8 slot) {
+bool start_motor(u8 slot) {
 	u16 i;
 	u8 r = slot%10;
 	if (r >= 5) r--; 
 	r = 1 << (r-1);
+	motor_on(slot);
+	delay(100);
 	for (i = 0; i < 1000; i++) {
 		if ((home_sensors & r) != 0) return 1;
 		delay(1);
 	}
 	/* it never left */
+	motors_off();
 	return 0;
 }
 
@@ -113,6 +116,7 @@ bool back_home(u8 slot) {
 
 	for (i = 0; i < 5; i++) {
 		if ((home_sensors & r) == 0) return 1;
+		delay(1);
 	}
 
 	/* it never arrived */
@@ -134,13 +138,7 @@ bool motor_overcurrent() {
 
 u8 dispense_motor(u8 slot) {
 	if (!is_motor(slot)) return MOTOR_NOSLOT;
-
-	motor_on(slot);
-
-	if (!left_home(slot)) {
-		motors_off();
-		return MOTOR_HOME_FAIL;
-	}
+	if (!start_motor(slot)) return MOTOR_HOME_FAIL;
 
 	while (1) {
 		if (motor_overcurrent()) {