diff --git a/frc971/control_loops/BUILD b/frc971/control_loops/BUILD
index 7988e51..b6b0362 100644
--- a/frc971/control_loops/BUILD
+++ b/frc971/control_loops/BUILD
@@ -155,6 +155,7 @@
         "hybrid_state_feedback_loop.h",
     ],
     deps = [
+        ":c2d",
         ":state_feedback_loop",
         "//aos:macros",
         "//aos/controls:control_loop",
@@ -265,6 +266,17 @@
 )
 
 cc_library(
+    name = "c2d",
+    hdrs = [
+        "c2d.h",
+    ],
+    visibility = ["//visibility:public"],
+    deps = [
+        "//third_party/eigen",
+    ],
+)
+
+cc_library(
     name = "dlqr",
     hdrs = [
         "dlqr.h",
diff --git a/frc971/control_loops/c2d.h b/frc971/control_loops/c2d.h
new file mode 100644
index 0000000..453a6a5
--- /dev/null
+++ b/frc971/control_loops/c2d.h
@@ -0,0 +1,39 @@
+#ifndef FRC971_CONTROL_LOOPS_C2D_H_
+#define FRC971_CONTROL_LOOPS_C2D_H_
+
+#include <chrono>
+
+#include <Eigen/Dense>
+
+namespace frc971 {
+namespace controls {
+
+template <typename Scalar, int num_states, int num_inputs>
+void C2D(const ::Eigen::Matrix<Scalar, num_states, num_states> &A_continuous,
+         const ::Eigen::Matrix<Scalar, num_states, num_inputs> &B_continuous,
+         ::std::chrono::nanoseconds dt,
+         ::Eigen::Matrix<Scalar, num_states, num_states> *A,
+         ::Eigen::Matrix<Scalar, num_states, num_inputs> *B) {
+  // Trick from
+  // https://en.wikipedia.org/wiki/Discretization#Discretization_of_linear_state_space_models
+  // to solve for A and B more efficiently.
+  Eigen::Matrix<Scalar, num_states + num_inputs, num_states + num_inputs>
+      M_state_continuous;
+  M_state_continuous.setZero();
+  M_state_continuous.template block<num_states, num_states>(0, 0) =
+      A_continuous *
+      ::std::chrono::duration_cast<::std::chrono::duration<Scalar>>(dt).count();
+  M_state_continuous.template block<num_states, num_inputs>(0, num_states) =
+      B_continuous *
+      ::std::chrono::duration_cast<::std::chrono::duration<Scalar>>(dt).count();
+
+  Eigen::Matrix<Scalar, num_states + num_inputs, num_states + num_inputs>
+      M_state = M_state_continuous.exp();
+  *A = M_state.template block<num_states, num_states>(0, 0);
+  *B = M_state.template block<num_states, num_inputs>(0, num_states);
+}
+
+}  // namespace controls
+}  // namespace frc971
+
+#endif  // FRC971_CONTROL_LOOPS_C2D_H_
diff --git a/frc971/control_loops/drivetrain/drivetrain.cc b/frc971/control_loops/drivetrain/drivetrain.cc
index a4401ea..177c0a5 100644
--- a/frc971/control_loops/drivetrain/drivetrain.cc
+++ b/frc971/control_loops/drivetrain/drivetrain.cc
@@ -192,6 +192,13 @@
         last_gyro_time_ = monotonic_now;
       }
       break;
+    case GyroType::FLIPPED_IMU_Z_GYRO:
+      if (is_latest_imu_values) {
+        LOG_STRUCT(DEBUG, "using", *imu_values.get());
+        last_gyro_rate_ = -imu_values->gyro_z;
+        last_gyro_time_ = monotonic_now;
+      }
+      break;
     case GyroType::SPARTAN_GYRO:
       if (gyro_reading.FetchLatest()) {
         LOG_STRUCT(DEBUG, "using", *gyro_reading.get());
diff --git a/frc971/control_loops/drivetrain/drivetrain_config.h b/frc971/control_loops/drivetrain/drivetrain_config.h
index 6e546a3..92d15b0 100644
--- a/frc971/control_loops/drivetrain/drivetrain_config.h
+++ b/frc971/control_loops/drivetrain/drivetrain_config.h
@@ -27,6 +27,7 @@
   IMU_Y_GYRO = 2,   // Use the y-axis of the gyro on the IMU.
   IMU_Z_GYRO = 3,   // Use the z-axis of the gyro on the IMU.
   FLIPPED_SPARTAN_GYRO = 4, // Use the gyro on the spartan board.
+  FLIPPED_IMU_Z_GYRO = 5,   // Use the flipped z-axis of the gyro on the IMU.
 };
 
 enum class IMUType : int32_t {
diff --git a/frc971/control_loops/hybrid_state_feedback_loop.h b/frc971/control_loops/hybrid_state_feedback_loop.h
index 0fb803f..05d5aab 100644
--- a/frc971/control_loops/hybrid_state_feedback_loop.h
+++ b/frc971/control_loops/hybrid_state_feedback_loop.h
@@ -15,6 +15,7 @@
 #include "aos/controls/control_loop.h"
 #include "aos/logging/logging.h"
 #include "aos/macros.h"
+#include "frc971/control_loops/c2d.h"
 #include "frc971/control_loops/state_feedback_loop.h"
 
 template <int number_of_states, int number_of_inputs, int number_of_outputs,
@@ -188,27 +189,8 @@
 
  private:
   void UpdateAB(::std::chrono::nanoseconds dt) {
-    Eigen::Matrix<Scalar, number_of_states + number_of_inputs,
-                  number_of_states + number_of_inputs>
-        M_state_continuous;
-    M_state_continuous.setZero();
-    M_state_continuous.template block<number_of_states, number_of_states>(0,
-                                                                          0) =
-        coefficients().A_continuous *
-        ::std::chrono::duration_cast<::std::chrono::duration<Scalar>>(dt)
-            .count();
-    M_state_continuous.template block<number_of_states, number_of_inputs>(
-        0, number_of_states) =
-        coefficients().B_continuous *
-        ::std::chrono::duration_cast<::std::chrono::duration<Scalar>>(dt)
-            .count();
-
-    Eigen::Matrix<Scalar, number_of_states + number_of_inputs,
-                  number_of_states + number_of_inputs>
-        M_state = M_state_continuous.exp();
-    A_ = M_state.template block<number_of_states, number_of_states>(0, 0);
-    B_ = M_state.template block<number_of_states, number_of_inputs>(
-        0, number_of_states);
+    ::frc971::controls::C2D(coefficients().A_continuous,
+                            coefficients().B_continuous, dt, &A_, &B_);
   }
 
   Eigen::Matrix<Scalar, number_of_states, 1> X_;
