diff --git a/gstlal-calibration/bin/gstlal_compute_strain b/gstlal-calibration/bin/gstlal_compute_strain
index eeeed6a68fdccb757d46d4ab0a22bf7f9f99cafb..9297b9da003ab98689abc6f9573684fa17c5a18c 100644
--- a/gstlal-calibration/bin/gstlal_compute_strain
+++ b/gstlal-calibration/bin/gstlal_compute_strain
@@ -206,6 +206,7 @@ parser.add_option("--exc-channel-name", metavar = "name", default = "CAL-CS_LINE
 parser.add_option("--tst-exc-channel-name", metavar = "name", default = "SUS-ETMY_L3_CAL_LINE_OUT_DQ", help = "Set the name of the TST excitation channel.  This is only necessary when the \kappa_tst factors computation is turned on, which is the default behavior. (Default = SUS-ETMY_L3_CAL_LINE_OUT_DQ)")
 parser.add_option("--pcal-channel-name", metavar = "name", default = "CAL-PCALY_RX_PD_OUT_DQ", help = "Set the name of the PCal channel used for calculating the calibration factors. (Default = CAL-PCALY_RX_PD_OUT_DQ)")
 parser.add_option("--dewhitening", action = "store_true", help = "Dewhitening should be used on the relevant channels, since the incoming channels are whitened and single precision.")
+parser.add_option("--remove-DC", action = "store_true", help = "Set this option to remove the DC component from the residual and control channels before filtering.")
 parser.add_option("--low-latency", action = "store_true", help = "Run the pipeline in low-latency mode. This uses minimal queueing. Otherwise, maximal queueing is used to prevent the pipeline from locking up.")
 parser.add_option("--update-fcc", action = "store_true", help = "Update the cavity pole filter with time.")
 parser.add_option("--fcc-filter-duration", metavar = "seconds", default = 1.0, type = float, help = "Duration of the cavity pole FIR filter. (Default = 0.01 seconds)")
@@ -1085,6 +1086,9 @@ if options.full_calibration:
 
 # resample what will become the TST actuation chain to the TST FIR filter sample rate
 tst = calibration_parts.mkresample(pipeline, tst, 5, False, "audio/x-raw, format=F64LE, rate=%d" %  tstchainsr)
+# Remove any DC component
+if options.remove_DC:
+	tst = calibration_parts.removeDC(pipeline, tst, "audio/x-raw, format=F64LE, rate=%d" %  tstchainsr, "tst")
 # High-pass filter the TST chain
 if any(act_highpass):
 	tst = pipeparts.mkfirbank(pipeline, tst, latency = act_highpass_delay, fir_matrix = [act_highpass[::-1]], time_domain = td)
@@ -1103,6 +1107,9 @@ if tstchainsr != pumuimchainsr or options.apply_kappatst or options.apply_kappap
 
 # resample what will become the PUM/UIM actuation chain to the PUM/UIM FIR filter sample rate
 pumuim = calibration_parts.mkresample(pipeline, pumuim, 5, False, "audio/x-raw, format=F64LE, rate=%d" % pumuimchainsr)
+# Remove any DC component
+if options.remove_DC:
+	pumuim = calibration_parts.removeDC(pipeline, pumuim, "audio/x-raw, format=F64LE, rate=%d" %  pumuimchainsr, "pumuim")
 # High-pass filter the PUM/UIM chain
 if any(act_highpass):
 	pumuim = pipeparts.mkfirbank(pipeline, pumuim, latency = act_highpass_delay, fir_matrix = [act_highpass[::-1]], time_domain = td)
@@ -1157,6 +1164,10 @@ if options.partial_calibration:
 	res = calibration_parts.caps_and_progress(pipeline, head_dict["res"], hoft_caps, "res")
 	res = restee = pipeparts.mktee(pipeline, res)
 
+# Remove any DC component
+if options.remove_DC:
+	res = calibration_parts.removeDC(pipeline, res, hoft_caps, "res")
+
 # High-pass filter the residual chain
 if any(invsens_highpass):
 	res = pipeparts.mkfirbank(pipeline, res, latency = invsens_highpass_delay, fir_matrix = [invsens_highpass[::-1]], time_domain = td)