diff --git a/src/xrt/drivers/survive/survive_driver.c b/src/xrt/drivers/survive/survive_driver.c
index 3956ffedc..0b5a314b0 100644
--- a/src/xrt/drivers/survive/survive_driver.c
+++ b/src/xrt/drivers/survive/survive_driver.c
@@ -392,7 +392,8 @@ static void
 survive_controller_get_hand_tracking(struct xrt_device *xdev,
                                      enum xrt_input_name name,
                                      uint64_t at_timestamp_ns,
-                                     struct xrt_hand_joint_set *out_value)
+                                     struct xrt_hand_joint_set *out_value,
+                                     uint64_t *out_timestamp_ns)
 {
 	struct survive_device *survive = (struct survive_device *)xdev;
 
@@ -436,6 +437,9 @@ survive_controller_get_hand_tracking(struct xrt_device *xdev,
 
 	u_hand_joints_set_out_data(&survive->ctrl.hand_tracking, hand, &hand_relation, &hand_on_handle_pose, out_value);
 
+	// This is the truth - we pose-predicted or interpolated all the way up to `at_timestamp_ns`.
+	*out_timestamp_ns = at_timestamp_ns;
+
 	// This is a lie - apparently libsurvive doesn't report controller tracked/untracked state, so just say that the
 	// hand is being tracked
 	out_value->is_active = true;