diff --git a/bilby/gw/likelihood/base.py b/bilby/gw/likelihood/base.py
index 53621643b6d68b1fef504f0ff89b56b92ac74a4c..4fedef7717dfccc44e74d0f4a0c089c8f7b7af39 100644
--- a/bilby/gw/likelihood/base.py
+++ b/bilby/gw/likelihood/base.py
@@ -1112,21 +1112,55 @@ class GravitationalWaveTransient(Likelihood):
         else:
             raise ValueError("Unable to parse reference frame {}".format(frame))
 
-    def get_sky_frame_parameters(self):
-        time = self.parameters['{}_time'.format(self.time_reference)]
+    def get_sky_frame_parameters(self, parameters=None):
+        """
+        Generate ra, dec, and geocenter time for :code:`parameters`
+
+        This method will attempt to convert from the reference time and sky
+        parameters, but if they are not present it will fall back to ra and dec.
+
+        Parameters
+        ==========
+        parameters: dict, optional
+            The parameters to be converted.
+            If not specified :code:`self.parameters` will be used.
+
+        Returns
+        =======
+        dict: dictionary containing ra, dec, and geocent_time
+        """
+        if parameters is None:
+            parameters = self.parameters
+        time = parameters.get(f'{self.time_reference}_time', None)
+        if time is None and "geocent_time" in parameters:
+            logger.warning(
+                f"Cannot find {self.time_reference}_time in parameters. "
+                "Falling back to geocent time"
+            )
         if not self.reference_frame == "sky":
-            ra, dec = zenith_azimuth_to_ra_dec(
-                self.parameters['zenith'], self.parameters['azimuth'],
-                time, self.reference_frame)
+            try:
+                ra, dec = zenith_azimuth_to_ra_dec(
+                    parameters['zenith'], parameters['azimuth'],
+                    time, self.reference_frame)
+            except KeyError:
+                if "ra" in parameters and "dec" in parameters:
+                    ra = parameters["ra"]
+                    dec = parameters["dec"]
+                    logger.warning(
+                        "Cannot convert from zenith/azimuth to ra/dec falling "
+                        "back to provided ra/dec"
+                    )
+                else:
+                    raise
         else:
-            ra = self.parameters["ra"]
-            dec = self.parameters["dec"]
-        if "geocent" not in self.time_reference:
+            ra = parameters["ra"]
+            dec = parameters["dec"]
+        if "geocent" not in self.time_reference and f"{self.time_reference}_time" in parameters:
             geocent_time = time - self.reference_ifo.time_delay_from_geocenter(
                 ra=ra, dec=dec, time=time
             )
         else:
-            geocent_time = self.parameters["geocent_time"]
+            geocent_time = parameters["geocent_time"]
         return dict(ra=ra, dec=dec, geocent_time=geocent_time)
 
     @property
diff --git a/bilby/gw/likelihood/relative.py b/bilby/gw/likelihood/relative.py
index ddb4d3ee872b3f2c43efb181f4b3fdaba4b3db08..f7506ae7e8257659841a2ac23639fa418ca28409 100644
--- a/bilby/gw/likelihood/relative.py
+++ b/bilby/gw/likelihood/relative.py
@@ -216,8 +216,9 @@ class RelativeBinningGravitationalWaveTransient(GravitationalWaveTransient):
             )
 
     def set_fiducial_waveforms(self, parameters):
-        _fiducial = parameters["fiducial"]
+        parameters = parameters.copy()
         parameters["fiducial"] = 1
+        parameters.update(self.get_sky_frame_parameters(parameters=parameters))
         self.fiducial_polarizations = self.waveform_generator.frequency_domain_strain(
             parameters)
 
@@ -236,8 +237,6 @@ class RelativeBinningGravitationalWaveTransient(GravitationalWaveTransient):
             wf[interferometer.frequency_array > self.maximum_frequency] = 0
             self.per_detector_fiducial_waveforms[interferometer.name] = wf
 
-        parameters["fiducial"] = _fiducial
-
     def find_maximum_likelihood_parameters(self, parameter_bounds,
                                            iterations=5, maximization_kwargs=None):
         if maximization_kwargs is None: