diff --git a/flexpart_code/fpmetbinary_mod.F90 b/flexpart_code/fpmetbinary_mod.F90
index 1d37c03303672aa833f88f2117dc834febe8d038..3b65810556ca579278d9e418b4407f2775558506 100644
--- a/flexpart_code/fpmetbinary_mod.F90
+++ b/flexpart_code/fpmetbinary_mod.F90
@@ -30,6 +30,7 @@ MODULE fpmetbinary_mod
 
     USE com_mod
     USE conv_mod
+    USE par_mod, ONLY : nxmax, nymax, nzmax, nuvzmax, nwzmax
 
     IMPLICIT NONE
 
@@ -247,10 +248,21 @@ CONTAINS
         INTEGER, INTENT(IN) :: cm_index           ! Index of last dimension in
                                                   ! most com_mod variables.
                                                   ! Should be 1 or 2 
+
+        ! These are temporary variables, used in the LOAD option, for 
+        ! comparing against the current values in FLEXPART of nxmax, nymax, ...
+        INTEGER :: temp_nxmax, temp_nymax, temp_nzmax, &
+&                  temp_nuvzmax, temp_nwzmax
+
         CHARACTER(LEN=128) :: errmesg
 
         if (op == 'DUMP') THEN
 
+            ! Write the compiled max dimensions from par_mod - these are
+            ! not meant to be reassigned during a LOAD, but used as "header"
+            ! information to provide the structure of arrays
+            WRITE (iounit) nxmax, nymax, nzmax, nuvzmax, nwzmax
+
             ! Scalar values
             WRITE(iounit) nx, ny, nxmin1, nymin1, nxfield
             WRITE(iounit) nuvz, nwz, nz, nmixz, nlev_ec
@@ -389,6 +401,33 @@ CONTAINS
 
         ELSE IF (op == 'LOAD') THEN 
 
+            ! Read the compiled max dimensions that were dumped from par_mod 
+            ! when creating the fp file, so that we can compare against
+            ! current FLEXPART dimensions - they need to be the same, or else
+            ! we abort.
+            READ (iounit) temp_nxmax, temp_nymax, temp_nzmax, &
+&                         temp_nuvzmax, temp_nwzmax
+
+
+            IF ( (temp_nxmax == nxmax) .AND. (temp_nymax == nymax) .AND. &
+&                   (temp_nzmax == nzmax) .AND. &
+&                   (temp_nuvzmax == nuvzmax) .AND. &
+&                   (temp_nwzmax == nwzmax) ) THEN
+                CONTINUE
+            ELSE
+                PRINT *, 'Incompatible dimensions between fp file and current FLEXPART!'
+                PRINT *, ''
+                PRINT *, '                  FP file     Compiled FP'
+                PRINT *, 'nxmax:     ', temp_nxmax, '    ', nxmax 
+                PRINT *, 'nymax:     ', temp_nymax, '    ', nymax 
+                PRINT *, 'nzmax:     ', temp_nzmax, '    ', nzmax 
+                PRINT *, 'nuvzmax:     ', temp_nuvzmax, '    ', nuvzmax 
+                PRINT *, 'nwzmax:     ', temp_nwzmax, '    ', nwzmax 
+                PRINT *, ''
+                STOP
+            END IF
+
+
             ! Scalar values
             READ(iounit) nx, ny, nxmin1, nymin1, nxfield
             READ(iounit) nuvz, nwz, nz, nmixz, nlev_ec
diff --git a/flexpart_code/par_mod.F90 b/flexpart_code/par_mod.F90
index 5cb6bdf3d90da978b1397c3085f35ade7237c215..676e43acd51674c21c8b60bf445a9ddf83f23016 100644
--- a/flexpart_code/par_mod.F90
+++ b/flexpart_code/par_mod.F90
@@ -129,7 +129,7 @@ module par_mod
 
   !integer,parameter :: nxmax=361,nymax=181,nuvzmax=92,nwzmax=92,nzmax=92
   !integer,parameter :: nxmax=361,nymax=181,nuvzmax=61,nwzmax=61,nzmax=61
-  integer,parameter :: nxmax=721,nymax=361,nuvzmax=140,nwzmax=140,nzmax=140
+  integer,parameter :: nxmax=721,nymax=361,nuvzmax=138,nwzmax=138,nzmax=138
   !integer,parameter :: nxshift=359  ! for ECMWF
   integer,parameter :: nxshift=0     ! for GFS