diff --git a/aos/common/control_loop/ControlLoop-tmpl.h b/aos/common/control_loop/ControlLoop-tmpl.h
index 46178f1..e96ae66 100644
--- a/aos/common/control_loop/ControlLoop-tmpl.h
+++ b/aos/common/control_loop/ControlLoop-tmpl.h
@@ -26,12 +26,12 @@
 
 template <class T, bool has_position, bool fail_no_position>
 void ControlLoop<T, has_position, fail_no_position>::Iterate() {
-  LOG_INTERVAL(no_prior_goal_);
-  LOG_INTERVAL(no_sensor_generation_);
-  LOG_INTERVAL(very_stale_position_);
-  LOG_INTERVAL(no_prior_position_);
-  LOG_INTERVAL(driver_station_old_);
-  LOG_INTERVAL(no_driver_station_);
+  no_prior_goal_.Print();
+  no_sensor_generation_.Print();
+  very_stale_position_.Print();
+  no_prior_position_.Print();
+  driver_station_old_.Print();
+  no_driver_station_.Print();
 
   // Fetch the latest control loop goal and position.  If there is no new
   // goal, we will just reuse the old one.
@@ -42,14 +42,14 @@
   // goals.
   const GoalType *goal = control_loop_->goal.get();
   if (goal == NULL) {
-    no_prior_goal_.WantToLog();
+    LOG_INTERVAL(no_prior_goal_);
     ZeroOutputs();
     return;
   }
 
   ::bbb::sensor_generation.FetchLatest();
   if (::bbb::sensor_generation.get() == nullptr) {
-    no_sensor_generation_.WantToLog();
+    LOG_INTERVAL(no_sensor_generation_);
     ZeroOutputs();
     return;
   }
@@ -82,7 +82,7 @@
       if (control_loop_->position.get() && !reset_) {
         int msec_age = control_loop_->position.Age().ToMSec();
         if (!control_loop_->position.IsNewerThanMS(kPositionTimeoutMs)) {
-          very_stale_position_.WantToLog();
+          LOG_INTERVAL(very_stale_position_);
           ZeroOutputs();
           return;
         } else {
@@ -90,7 +90,7 @@
               kPositionTimeoutMs);
         }
       } else {
-        no_prior_position_.WantToLog();
+        LOG_INTERVAL(no_prior_position_);
         if (fail_no_position) {
           ZeroOutputs();
           return;
@@ -111,9 +111,9 @@
     outputs_enabled = true;
   } else {
     if (::aos::robot_state.get()) {
-      driver_station_old_.WantToLog();
+      LOG_INTERVAL(driver_station_old_);
     } else {
-      no_driver_station_.WantToLog();
+      LOG_INTERVAL(no_driver_station_);
     }
   }
 
