diff --git a/pyfstat/helper_functions.py b/pyfstat/helper_functions.py
index 7e2226b2450b91dbb23bea66d08ecd08ac63c7c8..d6eece25a54addad1caa41fe0bebad5a2c4afd96 100644
--- a/pyfstat/helper_functions.py
+++ b/pyfstat/helper_functions.py
@@ -239,3 +239,26 @@ def get_sft_array(sftfilepattern, data_duration, F0, dF0):
     times = np.linspace(0, data_duration, nsfts)
 
     return times, freqs, data
+
+
+def get_covering_band(tref, tstart, tend, uniform_prior):
+    tref = lal.LIGOTimeGPS(tref)
+    tstart = lal.LIGOTimeGPS(tstart)
+    tend = lal.LIGOTimeGPS(tend)
+    psr = lalpulsar.PulsarSpinRange()
+    for i, key in enumerate(['F0', 'F1', 'F2']):
+        if key in uniform_prior:
+            if type(uniform_prior[key]) == dict and uniform_prior[key]['type'] == 'unif':
+                l, u = uniform_prior[key]['lower'], uniform_prior[key]['upper']
+                psr.fkdot[i] = (l+u)/2.
+                psr.fkdotBand[i] = u-l
+            else:
+                psr.fkdot[i] = uniform_prior[key]
+                psr.fkdotBand[i] = 0
+        else:
+            raise ValueError(
+                'uniform_prior should contain unif or const values of F0, F1, F2')
+    psr.refTime = tref
+    return lalpulsar.CWSignalCoveringBand(tstart, tend, psr, 0, 0, 0)
+
+
diff --git a/pyfstat/injection_helper_functions.py b/pyfstat/injection_helper_functions.py
index 972115c88fe2bd6cdb7e5bb46fade17eed86f8e5..36985184b8b5a7b0bfca943c77303a49a0c65d94 100644
--- a/pyfstat/injection_helper_functions.py
+++ b/pyfstat/injection_helper_functions.py
@@ -11,6 +11,7 @@ try:
     from astropy.time import Time
 except ImportError:
     logging.warning('Python module astropy not installed')
+import lal
 
 # Assume Earth goes around Sun in a non-wobbling circle at constant speed;
 # Still take the zero longitude to be the Earth's position during the March
@@ -34,7 +35,7 @@ def _eclToEq(lon, lat):
 def _calcDopplerWings(
         s_freq, s_alpha, s_delta, lonStart, lonStop, numTimes=100):
     e_longitudes = np.linspace(lonStart, lonStop, numTimes)
-    v_over_c = 1e-4
+    v_over_c = 2*np.pi*lal.AU_SI/lal.YRSID_SI/lal.C_SI
     s_lon, s_lat = _eqToEcl(s_alpha, s_delta)
 
     vertical = s_lat
@@ -61,23 +62,22 @@ def get_frequency_range_of_signal(F0, F1, Alpha, Delta, minStartTime,
     minStartTime, maxStartTime: float
         GPS time of the start and end of the data span
 
+    Note: assumes tref is in the middle of the data span
+
     Returns
     -------
     [Fmin, Fmax]: array
         The minimum and maximum frequency span
     """
-    YEAR_IN_DAYS = 365.25
+    YEAR_IN_DAYS = lal.YRSID_SI / lal.DAYSID_SI
     tEquinox = 79
 
     minStartTime_t = Time(minStartTime, format='gps').to_datetime().timetuple()
-    maxStartTime_t = Time(minStartTime, format='gps').to_datetime().timetuple()
+    maxStartTime_t = Time(maxStartTime, format='gps').to_datetime().timetuple()
     tStart_days = minStartTime_t.tm_yday - tEquinox
     tStop_days = maxStartTime_t.tm_yday - tEquinox
     tStop_days += (maxStartTime_t.tm_year-minStartTime_t.tm_year)*YEAR_IN_DAYS
 
-    tStart_days = 280 - tEquinox  # 7 October is day 280 in a non leap year
-    tStop_days = 19 + YEAR_IN_DAYS - tEquinox  # the next year
-
     lonStart = 2*np.pi*tStart_days/YEAR_IN_DAYS - np.pi
     lonStop = 2*np.pi*tStop_days/YEAR_IN_DAYS - np.pi