diff --git a/ArduCopter/system.pde b/ArduCopter/system.pde
index 48a6f9f4a1171d476519a63f55a1afa7452ce3e5..0655ed20f308292561e87d5d2308eae3ea2ac1ad 100644
--- a/ArduCopter/system.pde
+++ b/ArduCopter/system.pde
@@ -408,8 +408,8 @@ static void set_mode(byte mode)
 
     // used to stop fly_aways
     // set to false if we have low throttle
-    motors.auto_armed(g.rc_3.control_in > 0);
-    set_auto_armed(g.rc_3.control_in > 0);
+    motors.auto_armed(g.rc_3.control_in > 0 || ap.failsafe);
+    set_auto_armed(g.rc_3.control_in > 0 || ap.failsafe);
 
     // if we change modes, we must clear landed flag
     set_land_complete(false);
@@ -570,17 +570,6 @@ static void set_mode(byte mode)
         break;
     }
 
-    if(ap.failsafe) {
-        // this is to allow us to fly home without interactive throttle control
-        set_throttle_mode(THROTTLE_AUTO);
-    	ap.manual_throttle = false;
-
-        // does not wait for us to be in high throttle, since the
-        // Receiver will be outputting low throttle
-        motors.auto_armed(true);
-    	set_auto_armed(true);
-    }
-
     if(ap.manual_attitude) {
         // We are under manual attitude control
         // remove the navigation from roll and pitch command