diff --git a/geomagio/residual/Calculation.py b/geomagio/residual/Calculation.py
index 84b3051f02712b15afd95e0e48ff8d73af651e9c..6c415f0b6ceaecd663d6fd552cf2c6977de9b552 100644
--- a/geomagio/residual/Calculation.py
+++ b/geomagio/residual/Calculation.py
@@ -129,6 +129,12 @@ def calculate(reading: Reading, adjust_reference: bool = True) -> Reading:
         vertical_component=vertical_component,
     )
 
+    # just persist Absolute.valid if passed to calculate
+    if reading.absolutes:
+        absoluteD.valid = reading.absolutes[0].valid
+        absoluteH.valid = reading.absolutes[1].valid
+        absoluteZ.valid = reading.absolutes[2].valid
+
     # create new reading object
     calculated = Reading(
         absolutes=[absoluteD, absoluteH, absoluteZ],