diff --git a/libraries/AP_InertialSensor/AP_InertialSensor.cpp b/libraries/AP_InertialSensor/AP_InertialSensor.cpp
index 30b0dcbb8927a4a0fe4d092f9a4847f817e2c224..95e55793b0e3dff4208c45fe45bb68f606797c2c 100644
--- a/libraries/AP_InertialSensor/AP_InertialSensor.cpp
+++ b/libraries/AP_InertialSensor/AP_InertialSensor.cpp
@@ -171,15 +171,15 @@ AP_InertialSensor::_init_gyro()
         update();
     }
 
-    // the strategy is to average 200 points over 1 second, then do it
+    // the strategy is to average 50 points over 0.5 seconds, then do it
     // again and see if the 2nd average is within a small margin of
     // the first
 
     uint8_t num_converged = 0;
 
     // we try to get a good calibration estimate for up to 10 seconds
-    // if the gyros are stable, we should get it in 2 seconds
-    for (int16_t j = 0; j <= 10 && num_converged < num_gyros; j++) {
+    // if the gyros are stable, we should get it in 1 second
+    for (int16_t j = 0; j <= 20 && num_converged < num_gyros; j++) {
         Vector3f gyro_sum[num_gyros], gyro_avg[num_gyros], gyro_diff[num_gyros];
         float diff_norm[num_gyros];
         uint8_t i;