diff --git a/src/grid_mod.F90 b/src/grid_mod.F90
index d193692528b869b72b662517f61ff0ea14295a1e..aa4f58b97ccdff840100b178a3684f2faa9ae692 100644
--- a/src/grid_mod.F90
+++ b/src/grid_mod.F90
@@ -362,10 +362,19 @@ CONTAINS
     USE model, ONLY: LINEARITY, N_HD
     IMPLICIT NONE
     REAL(dp), INTENT(IN) :: shear
+    REAL    :: Lx_adapted
     INTEGER :: i_, counter
     IF(shear .GT. 0._dp) THEN
       IF(my_id.EQ.0) write(*,*) 'Magnetic shear detected: set up sheared kx grid..'
-      Lx = Ly/(2._dp*pi*shear*Npol)*Nexc
+      ! mininal size of box in x to respect dkx = 2pi shear dky
+      Lx_adapted = Ly/(2._dp*pi*shear*Npol)
+      ! Put Nexc to 0 so that it is computed from a target value Lx
+      IF(Nexc .EQ. 0) THEN
+        Nexc = CEILING(0.9 * Lx/Lx_adapted)
+        IF(my_id.EQ.0) write(*,*) 'Adapted Nexc =', Nexc
+      ENDIF
+      ! x length is adapted
+      Lx = Lx_adapted*Nexc
     ENDIF
     Nkx = Nx;
     ! Local data