diff --git a/bilby/gw/conversion.py b/bilby/gw/conversion.py
index 2ac660253edd5383d2e29123758c125fb083e0a8..ad1981434c0606e56260cfbac3a4bb2f1e103fba 100644
--- a/bilby/gw/conversion.py
+++ b/bilby/gw/conversion.py
@@ -1017,18 +1017,19 @@ def generate_component_spins(sample):
         ['theta_jn', 'phi_jl', 'tilt_1', 'tilt_2', 'phi_12', 'a_1', 'a_2',
          'mass_1', 'mass_2', 'reference_frequency', 'phase']
     if all(key in output_sample.keys() for key in spin_conversion_parameters):
-        output_sample['iota'], output_sample['spin_1x'],\
-            output_sample['spin_1y'], output_sample['spin_1z'], \
-            output_sample['spin_2x'], output_sample['spin_2y'],\
-            output_sample['spin_2z'] =\
-            transform_precessing_spins(
-                output_sample['theta_jn'], output_sample['phi_jl'],
-                output_sample['tilt_1'], output_sample['tilt_2'],
-                output_sample['phi_12'], output_sample['a_1'],
-                output_sample['a_2'],
-                output_sample['mass_1'] * solar_mass,
-                output_sample['mass_2'] * solar_mass,
-                output_sample['reference_frequency'], output_sample['phase'])
+        (
+            output_sample['iota'], output_sample['spin_1x'],
+            output_sample['spin_1y'], output_sample['spin_1z'],
+            output_sample['spin_2x'], output_sample['spin_2y'],
+            output_sample['spin_2z']
+        ) = np.vectorize(bilby_to_lalsimulation_spins)(
+            output_sample['theta_jn'], output_sample['phi_jl'],
+            output_sample['tilt_1'], output_sample['tilt_2'],
+            output_sample['phi_12'], output_sample['a_1'], output_sample['a_2'],
+            output_sample['mass_1'] * solar_mass,
+            output_sample['mass_2'] * solar_mass,
+            output_sample['reference_frequency'], output_sample['phase']
+        )
 
         output_sample['phi_1'] =\
             np.fmod(2 * np.pi + np.arctan2(