diff --git a/y2017/control_loops/superstructure/superstructure.cc b/y2017/control_loops/superstructure/superstructure.cc
index 95c771b..ee7b80b 100644
--- a/y2017/control_loops/superstructure/superstructure.cc
+++ b/y2017/control_loops/superstructure/superstructure.cc
@@ -2,6 +2,7 @@
 
 #include "aos/common/controls/control_loops.q.h"
 #include "aos/common/logging/logging.h"
+#include "frc971/control_loops/drivetrain/drivetrain.q.h"
 #include "y2017/constants.h"
 #include "y2017/control_loops/superstructure/column/column.h"
 #include "y2017/control_loops/superstructure/hood/hood.h"
@@ -19,10 +20,25 @@
 constexpr double kMaxIndexerRollerVoltage = 12.0;
 }  // namespace
 
+typedef ::y2017::constants::Values::ShotParams ShotParams;
+using ::frc971::control_loops::drivetrain_queue;
+
 Superstructure::Superstructure(
     control_loops::SuperstructureQueue *superstructure_queue)
     : aos::controls::ControlLoop<control_loops::SuperstructureQueue>(
-          superstructure_queue) {}
+          superstructure_queue) {
+  shot_interpolation_table_ =
+      ::frc971::shooter_interpolation::InterpolationTable<ShotParams>({
+          // { distance_to_target, { shot_angle, shot_power, indexer_velocity }},
+          {1.21, {0.29, 301.0, -1.0 * M_PI}},   // table entry
+          {1.55, {0.305, 316.0, -1.1 * M_PI}},   // table entry
+          {1.82, {0.33, 325.0, -1.3 * M_PI}},   // table entry
+          {2.00, {0.34, 328.0, -1.4 * M_PI}},   // table entry
+          {2.28, {0.36, 338.0, -1.5 * M_PI}},   // table entry
+          {2.55, {0.395, 342.0, -1.8 * M_PI}},  // table entry
+          {2.81, {0.41, 351.0, -1.90 * M_PI}},  // table entry
+      });
+}
 
 void Superstructure::RunIteration(
     const control_loops::SuperstructureQueue::Goal *unsafe_goal,
@@ -46,6 +62,7 @@
   HoodGoal hood_goal;
   ShooterGoal shooter_goal;
   IndexerGoal indexer_goal;
+  bool in_range = true;
   if (unsafe_goal != nullptr) {
     hood_goal = unsafe_goal->hood;
     shooter_goal = unsafe_goal->shooter;
@@ -57,21 +74,43 @@
 
     distance_average_.Tick(::aos::monotonic_clock::now(), vision_status);
     status->vision_distance = distance_average_.Get();
-    if (distance_average_.Valid()) {
-      LOG(DEBUG, "VisionDistance %f\n", status->vision_distance);
+
+    // If we are moving too fast, disable shooting and clear the accumulator.
+    double robot_velocity = 0.0;
+    drivetrain_queue.status.FetchLatest();
+    if (drivetrain_queue.status.get()) {
+      robot_velocity = drivetrain_queue.status->robot_speed;
+    }
+
+    if (::std::abs(robot_velocity) > 0.2) {
       if (unsafe_goal->use_vision_for_shots) {
-        y2017::constants::Values::ShotParams shot_params;
-        if (constants::GetValues().shot_interpolation_table.GetInRange(
+        LOG(INFO, "Moving too fast, resetting\n");
+      }
+      distance_average_.Reset();
+    }
+    if (distance_average_.Valid()) {
+      if (unsafe_goal->use_vision_for_shots) {
+        ShotParams shot_params;
+        if (shot_interpolation_table_.GetInRange(
                 distance_average_.Get(), &shot_params)) {
           hood_goal.angle = shot_params.angle;
           shooter_goal.angular_velocity = shot_params.power;
           if (indexer_goal.angular_velocity != 0.0) {
             indexer_goal.angular_velocity = shot_params.indexer_velocity;
           }
+        } else {
+          in_range = false;
         }
       }
+      LOG(DEBUG, "VisionDistance %f, hood %f shooter %f, indexer %f * M_PI\n",
+          status->vision_distance, hood_goal.angle,
+          shooter_goal.angular_velocity, indexer_goal.angular_velocity / M_PI);
     } else {
       LOG(DEBUG, "VisionNotValid %f\n", status->vision_distance);
+      if (unsafe_goal->use_vision_for_shots) {
+        in_range = false;
+        indexer_goal.angular_velocity = 0.0;
+      }
     }
   }
 
@@ -160,14 +199,14 @@
       output->red_light_on = true;
       output->green_light_on = false;
       output->blue_light_on = false;
-    } else if (status->turret.vision_tracking) {
-      output->red_light_on = false;
-      output->green_light_on = true;
-      output->blue_light_on = false;
     } else if (!status->zeroed) {
       output->red_light_on = false;
       output->green_light_on = false;
       output->blue_light_on = true;
+    } else if (status->turret.vision_tracking && in_range) {
+      output->red_light_on = false;
+      output->green_light_on = true;
+      output->blue_light_on = false;
     }
   }
 }
diff --git a/y2017/control_loops/superstructure/superstructure.h b/y2017/control_loops/superstructure/superstructure.h
index e15bfe3..263d4b0 100644
--- a/y2017/control_loops/superstructure/superstructure.h
+++ b/y2017/control_loops/superstructure/superstructure.h
@@ -51,6 +51,10 @@
 
   VisionDistanceAverage distance_average_;
 
+  ::frc971::shooter_interpolation::InterpolationTable<
+      ::y2017::constants::Values::ShotParams>
+      shot_interpolation_table_;
+
   DISALLOW_COPY_AND_ASSIGN(Superstructure);
 };
 
diff --git a/y2017/control_loops/superstructure/vision_time_adjuster.cc b/y2017/control_loops/superstructure/vision_time_adjuster.cc
index 1bd61f8..9261b71 100644
--- a/y2017/control_loops/superstructure/vision_time_adjuster.cc
+++ b/y2017/control_loops/superstructure/vision_time_adjuster.cc
@@ -156,8 +156,8 @@
       most_recent_drivetrain_angle_);
 
   // Now, update the vision valid flag to tell us if we have a valid vision
-  // angle within the last two seconds.
-  if (monotonic_now < most_recent_vision_time_ + chrono::seconds(2)) {
+  // angle within the last seven seconds.
+  if (monotonic_now < most_recent_vision_time_ + chrono::seconds(7)) {
     valid_ = true;
   } else {
     valid_ = false;
