diff --git a/src/OCE/IOM/iom_nf90.F90 b/src/OCE/IOM/iom_nf90.F90
index 67997b9a407e6a19a201079d3187b706460de8a5..6a95cdd3985ef946b31672930baf10a37d2a8ae0 100644
--- a/src/OCE/IOM/iom_nf90.F90
+++ b/src/OCE/IOM/iom_nf90.F90
@@ -697,10 +697,12 @@ CONTAINS
 
             IF( PRESENT(pv_r2d) )  ishape(1:2) = SHAPE(pv_r2d)
             IF( PRESENT(pv_r3d) )  ishape(1:3) = SHAPE(pv_r3d)
-            IF(     ishape(1) == Ni_0 .AND. ishape(2) == Nj_0 ) THEN
-               ix1 = 1      ;   ix2 = Ni_0   ;   iy1 = 1      ;   iy2 = Nj_0
-            ELSEIF( ishape(1) == jpi  .AND. ishape(2) == jpj  ) THEN
-               ix1 = Nis0   ;   ix2 = Nie0   ;   iy1 = Njs0   ;   iy2 = Nje0
+            IF(     ishape(1) == Ni_0   .AND. ishape(2) == Nj_0   ) THEN           ! array with 0 halo
+               ix1 = 1      ;   ix2 = Ni_0     ;   iy1 = 1      ;   iy2 = Nj_0
+            ELSEIF( ishape(1) == jpi    .AND. ishape(2) == jpj    ) THEN           ! array with nn_hls halos
+               ix1 = Nis0   ;   ix2 = Nie0     ;   iy1 = Njs0   ;   iy2 = Nje0
+            ELSEIF( ishape(1) == Ni_0+1 .AND. ishape(2) == Nj_0+1 ) THEN           ! nn_hls = 2 and array with 1 halo
+               ix1 = 2      ;   ix2 = Ni_0+1   ;   iy1 = 2      ;   iy2 = Nj_0+1
             ELSE
                CALL ctl_stop( 'iom_nf90_rp0123d: should have been an impossible case...' )
             ENDIF