diff --git a/frc971/constants.cpp b/frc971/constants.cpp
index 989b77e..bb12ac2 100644
--- a/frc971/constants.cpp
+++ b/frc971/constants.cpp
@@ -61,6 +61,9 @@
 const double kAngleAdjustZeroingSpeed = -0.2;
 const double kAngleAdjustZeroingOffSpeed = -0.5;
 
+const double kPracticeAngleAdjustDeadband = 0.825;
+const double kCompAngleAdjustDeadband = 0.825;
+
 const int kCompCameraCenter = -2;
 const int kPracticeCameraCenter = -5;
 
@@ -98,6 +101,9 @@
   // Zeroing off speed.
   double angle_adjust_zeroing_off_speed;
 
+  // Deadband voltage.
+  double angle_adjust_deadband;
+
   // what camera_center returns
   int camera_center;
 };
@@ -129,6 +135,7 @@
                             kCompAngleAdjustLowerPhysicalLimit,
                             kAngleAdjustZeroingSpeed,
                             kAngleAdjustZeroingOffSpeed,
+                            kCompAngleAdjustDeadband,
                             kCompCameraCenter};
         break;
       case kPracticeTeamNumber:
@@ -148,6 +155,7 @@
                             kPracticeAngleAdjustLowerPhysicalLimit,
                             kAngleAdjustZeroingSpeed,
                             kAngleAdjustZeroingOffSpeed,
+                            kPracticeAngleAdjustDeadband,
                             kPracticeCameraCenter};
         break;
       default:
@@ -271,6 +279,13 @@
   return true;
 }
 
+bool angle_adjust_deadband(double *voltage) {
+  const Values *const values = GetValues();
+  if (values == NULL) return false;
+  *voltage = values->angle_adjust_deadband;
+  return true;
+}
+
 bool camera_center(int *center) {
   const Values *const values = GetValues();
   if (values == NULL) return false;
