diff --git a/py_wake/deficit_models/deficit_model.py b/py_wake/deficit_models/deficit_model.py
index 0573b44e6e2f92a3f71f445d06821440ba729f72..e1673d902e5ab7a63fb41adebdc71d4003f3925c 100644
--- a/py_wake/deficit_models/deficit_model.py
+++ b/py_wake/deficit_models/deficit_model.py
@@ -6,6 +6,7 @@ from py_wake.utils.model_utils import method_args, RotorAvgAndGroundModelContain
 from py_wake.superposition_models import WeightedSum
 from py_wake.utils.grid_interpolator import GridInterpolator
 import inspect
+from py_wake.utils import gradients
 
 
 class DeficitModel(ABC, RotorAvgAndGroundModelContainer):
@@ -113,7 +114,9 @@ class BlockageDeficitModel(DeficitModel):
         if induc_ijlk is not None:
             # Close to the rotor the induced velocities become unphysical in some models and are
             # limited to the induction in the rotor plane estimated by BEM.
-            deficit_ijlk = np.where(np.abs(deficit_ijlk) > induc_ijlk, induc_ijlk * np.sign(deficit_ijlk), deficit_ijlk)
+            deficit_ijlk = np.where(np.abs(deficit_ijlk) > induc_ijlk,
+                                    induc_ijlk * gradients.sign(deficit_ijlk),
+                                    deficit_ijlk)
         return deficit_ijlk
 
 
diff --git a/py_wake/deficit_models/gaussian.py b/py_wake/deficit_models/gaussian.py
index 99946962bbf7747af055e3ecef7315d815863510..d31fe7d406f034eba2f00f2003d85745129d363b 100644
--- a/py_wake/deficit_models/gaussian.py
+++ b/py_wake/deficit_models/gaussian.py
@@ -516,8 +516,8 @@ class BlondelSuperGaussianDeficit2020(WakeDeficitModel):
         a1 = 2 ** (2 / n - 1)
         a2 = 2 ** (4 / n - 2)
 
-        deficit_center_ijlk = a1 - np.sqrt(a2 - ((n * ctx_ijlk) / (16.0 * gamma(2 / n) * np.sign(sigma_ijlk) *
-                                                                   (cabs(sigma_ijlk) ** (4 / n)))))
+        deficit_center_ijlk = a1 - np.sqrt(a2 - ((n * ctx_ijlk) /
+                                                 (16.0 * gamma(2 / n) * gradients.sign(sigma_ijlk) * (cabs(sigma_ijlk) ** (4 / n)))))
 
         return deficit_center_ijlk
 
diff --git a/py_wake/deflection_models/deflection_model.py b/py_wake/deflection_models/deflection_model.py
index c6ed7dbcf818544fc7ee6ad486873220a5fb972b..50acd752f30fd044c6c22ac1e92020041dd34d86 100644
--- a/py_wake/deflection_models/deflection_model.py
+++ b/py_wake/deflection_models/deflection_model.py
@@ -70,8 +70,8 @@ class DeflectionIntegrator(DeflectionModel):
         deflection_rate = self.get_deflection_rate(theta_ilk=theta_total_ilk, dw_ijlkx=dw_ijlkx,
                                                    yaw_ilk=yaw_ilk, tilt_ilk=tilt_ilk, **kwargs)
         deflection_ijlk = gradients.trapz(deflection_rate, dw_ijlkx, axis=4)
-        self.hcw_ijlk = hcw_ijlk + np.sign(dw_ijlk) * deflection_ijlk * np.cos(theta_total_angle_ilk[:, na])
-        self.dh_ijlk = dh_ijlk + np.sign(dw_ijlk) * deflection_ijlk * np.sin(theta_total_angle_ilk[:, na])
+        self.hcw_ijlk = hcw_ijlk + gradients.sign(dw_ijlk) * deflection_ijlk * np.cos(theta_total_angle_ilk[:, na])
+        self.dh_ijlk = dh_ijlk + gradients.sign(dw_ijlk) * deflection_ijlk * np.sin(theta_total_angle_ilk[:, na])
         return dw_ijlk, self.hcw_ijlk, self.dh_ijlk
 
     @abstractmethod
diff --git a/py_wake/tests/test_sites/test_distances.py b/py_wake/tests/test_sites/test_distances.py
index c20f303e91be638a689d0d1470d1d8f2ad6b965a..c4e19e6aa697cb43eb61cb2911183e584b9c4f6b 100644
--- a/py_wake/tests/test_sites/test_distances.py
+++ b/py_wake/tests/test_sites/test_distances.py
@@ -173,7 +173,7 @@ def test_straightDistance_turning(wfm_cls, turning, method, angle_func):
         warnings.simplefilter('ignore', UserWarning)
         fm_wide = sim_res.flow_map(XYGrid(x=450, y=np.linspace(-200, 200, 1001)), wd=270)
 
-    y = fm_wide.y[np.argmin(fm_wide.WS_eff.squeeze().values)]
+    y = fm_wide.y[np.argmin(fm_wide.WS_eff.squeeze().values)].item()
     with warnings.catch_warnings():
         warnings.simplefilter('ignore', UserWarning)
         fm = sim_res.flow_map(XYGrid(x=450, y=np.linspace(y - 2, y + 2, 1001)), wd=270)
@@ -313,11 +313,11 @@ def test_JITStreamlinesparquefictio():
     # average downwind distance increase around 5 m
     npt.assert_almost_equal((dw + dw.T).mean(), 5, 0)
 
-    fm = sim_res.flow_map(XYGrid(x=np.linspace(site.ds.x[0], site.ds.x[-1], 500),
-                                 y=np.linspace(site.ds.y[0], site.ds.y[-1], 500)))
+    fm = sim_res.flow_map(XYGrid(x=np.linspace(site.ds.x[0].item(), site.ds.x[-1].item(), 500),
+                                 y=np.linspace(site.ds.y[0].item(), site.ds.y[-1].item(), 500)))
     stream_lines = vf3d.stream_lines(wd=np.full(x.shape, wd), start_points=np.array([x, y, np.full(x.shape, 70)]).T,
                                      dw_stop=y - 6504700)
-    if 1:
+    if 0:
         fm.plot_wake_map()
         for sl in stream_lines:
             plt.plot(sl[:, 0], sl[:, 1])
diff --git a/py_wake/tests/test_utils/test_model_gradients.py b/py_wake/tests/test_utils/test_model_gradients.py
index ae69d57d6c22ff39fe77653e366ecd48d7c7bab1..9b1e47fb959cdc7f404cf2679b2c587b96446b60 100644
--- a/py_wake/tests/test_utils/test_model_gradients.py
+++ b/py_wake/tests/test_utils/test_model_gradients.py
@@ -5,8 +5,7 @@ import xarray as xr
 import matplotlib.pyplot as plt
 from py_wake import np
 from py_wake.deficit_models.deficit_model import WakeDeficitModel, BlockageDeficitModel
-from py_wake.deficit_models.gaussian import IEA37SimpleBastankhahGaussianDeficit, \
-    BastankhahGaussianDeficit, NiayifarGaussianDeficit
+from py_wake.deficit_models.gaussian import BastankhahGaussianDeficit, NiayifarGaussianDeficit
 from py_wake.deficit_models.no_wake import NoWakeDeficit
 from py_wake.deflection_models.deflection_model import DeflectionModel
 from py_wake.examples.data.ParqueFicticio._parque_ficticio import ParqueFicticioSite
@@ -25,7 +24,6 @@ from py_wake.utils import gradients
 from py_wake.utils.gradients import autograd, plot_gradients, fd, cs
 from py_wake.utils.model_utils import get_models
 from py_wake.wind_farm_models.engineering_models import PropagateDownwind, All2AllIterative, EngineeringWindFarmModel
-from py_wake.wind_farm_models.wind_farm_model import WindFarmModel
 from py_wake.deficit_models.noj import NOJDeficit
 from py_wake.site.jit_streamline_distance import JITStreamlineDistance
 from py_wake.site.xrsite import XRSite
diff --git a/py_wake/utils/gradients.py b/py_wake/utils/gradients.py
index 0a2af4d80fcc5f4383e1cb009b4dbc321c2a26b6..e4e4d070d3af31c13091da7f995901973291a515 100644
--- a/py_wake/utils/gradients.py
+++ b/py_wake/utils/gradients.py
@@ -386,3 +386,9 @@ def gamma(x):
         return agamma(x)
     else:
         return sgamma(x)
+
+
+def sign(x):
+    if np.iscomplexobj(x):
+        x = x.real
+    return np.sign(x)