diff --git a/frc971/control_loops/drivetrain/drivetrain.cc b/frc971/control_loops/drivetrain/drivetrain.cc
index 7a44b64..d42e6c6 100644
--- a/frc971/control_loops/drivetrain/drivetrain.cc
+++ b/frc971/control_loops/drivetrain/drivetrain.cc
@@ -117,15 +117,16 @@
   }
 
   kf_.set_index(ControllerIndexFromGears());
-  {
-    GearLogging gear_logging;
-    gear_logging.left_state = static_cast<uint32_t>(left_gear_);
-    gear_logging.right_state = static_cast<uint32_t>(right_gear_);
-    gear_logging.left_loop_high = MaybeHigh(left_gear_);
-    gear_logging.right_loop_high = MaybeHigh(right_gear_);
-    gear_logging.controller_index = kf_.index();
-    LOG_STRUCT(DEBUG, "state", gear_logging);
+
+  // Set the gear-logging parts of the status
+  if (status) {
+    status->gear_logging.left_state = static_cast<uint32_t>(left_gear_);
+    status->gear_logging.right_state = static_cast<uint32_t>(right_gear_);
+    status->gear_logging.left_loop_high = MaybeHigh(left_gear_);
+    status->gear_logging.right_loop_high = MaybeHigh(right_gear_);
+    status->gear_logging.controller_index = kf_.index();
   }
+
   const bool is_latest_imu_values = ::frc971::imu_values.FetchLatest();
   if (is_latest_imu_values) {
     const double rate = -::frc971::imu_values->gyro_y;
diff --git a/frc971/control_loops/drivetrain/drivetrain.q b/frc971/control_loops/drivetrain/drivetrain.q
index da4fadc..76f5ec6 100644
--- a/frc971/control_loops/drivetrain/drivetrain.q
+++ b/frc971/control_loops/drivetrain/drivetrain.q
@@ -144,6 +144,10 @@
 
     // The angle of the robot relative to the ground.
     double ground_angle;
+
+    // Information about shifting logic and curent gear, for logging purposes
+    GearLogging gear_logging;
+    CIMLogging cim_logging;
   };
 
   queue Goal goal;
diff --git a/frc971/control_loops/drivetrain/polydrivetrain.cc b/frc971/control_loops/drivetrain/polydrivetrain.cc
index 91c2fc9..f61083b 100644
--- a/frc971/control_loops/drivetrain/polydrivetrain.cc
+++ b/frc971/control_loops/drivetrain/polydrivetrain.cc
@@ -269,42 +269,33 @@
       loop_->mutable_X_hat() =
           loop_->plant().A() * loop_->X_hat() + loop_->plant().B() * loop_->U();
     }
+
+    // Housekeeping: set the shifting logging values to zero, because we're not shifting
+    left_motor_speed_ = 0.0;
+    right_motor_speed_ = 0.0;
+    current_left_velocity_ = 0.0;
+    current_right_velocity_ = 0.0;
   } else {
-    const double current_left_velocity =
+    current_left_velocity_ =
         (position_.left_encoder - last_position_.left_encoder) / dt_config_.dt;
-    const double current_right_velocity =
+    current_right_velocity_ =
         (position_.right_encoder - last_position_.right_encoder) /
         dt_config_.dt;
-    const double left_motor_speed =
+    left_motor_speed_ =
         MotorSpeed(dt_config_.left_drive, position_.left_shifter_position,
-                   current_left_velocity, left_gear_);
-    const double right_motor_speed =
+                   current_left_velocity_, left_gear_);
+    right_motor_speed_ =
         MotorSpeed(dt_config_.right_drive, position_.right_shifter_position,
-                   current_right_velocity, right_gear_);
+                   current_right_velocity_, right_gear_);
 
-    {
-      CIMLogging logging;
-
-      // Reset the CIM model to the current conditions to be ready for when we
-      // shift.
-      logging.left_in_gear = IsInGear(left_gear_);
-      logging.left_motor_speed = left_motor_speed;
-      logging.left_velocity = current_left_velocity;
-
-      logging.right_in_gear = IsInGear(right_gear_);
-      logging.right_motor_speed = right_motor_speed;
-      logging.right_velocity = current_right_velocity;
-
-      LOG_STRUCT(DEBUG, "currently", logging);
-    }
-    goal_left_velocity_ = current_left_velocity;
-    goal_right_velocity_ = current_right_velocity;
+    goal_left_velocity_ = current_left_velocity_;
+    goal_right_velocity_ = current_right_velocity_;
 
     // Any motor is not in gear. Speed match.
     ::Eigen::Matrix<double, 1, 1> R_left;
     ::Eigen::Matrix<double, 1, 1> R_right;
-    R_left(0, 0) = left_motor_speed;
-    R_right(0, 0) = right_motor_speed;
+    R_left(0, 0) = left_motor_speed_;
+    R_right(0, 0) = right_motor_speed_;
 
     const double wiggle =
         (static_cast<double>((counter_ % 30) / 15) - 0.5) * 8.0;
@@ -333,6 +324,14 @@
     ::frc971::control_loops::DrivetrainQueue::Status *status) {
   status->left_velocity_goal = goal_left_velocity_;
   status->right_velocity_goal = goal_right_velocity_;
+
+  status->cim_logging.left_in_gear = IsInGear(left_gear_);
+  status->cim_logging.left_motor_speed = left_motor_speed_;
+  status->cim_logging.left_velocity = current_left_velocity_;
+
+  status->cim_logging.right_in_gear = IsInGear(right_gear_);
+  status->cim_logging.right_motor_speed = right_motor_speed_;
+  status->cim_logging.right_velocity = current_right_velocity_;
 }
 
 }  // namespace drivetrain
diff --git a/frc971/control_loops/drivetrain/polydrivetrain.h b/frc971/control_loops/drivetrain/polydrivetrain.h
index 570b87f..070b7eb 100644
--- a/frc971/control_loops/drivetrain/polydrivetrain.h
+++ b/frc971/control_loops/drivetrain/polydrivetrain.h
@@ -66,6 +66,12 @@
 
   double goal_left_velocity_ = 0.0;
   double goal_right_velocity_ = 0.0;
+
+  // Stored from the last iteration, for logging shifting logic.
+  double left_motor_speed_ = 0.0;
+  double right_motor_speed_ = 0.0;
+  double current_left_velocity_ = 0.0;
+  double current_right_velocity_ = 0.0;
 };
 
 }  // namespace drivetrain
