diff --git a/src/LIB/SURCOUCHE/src/fmwrit_ll.f90 b/src/LIB/SURCOUCHE/src/fmwrit_ll.f90
index be0a980998777ccf2dadbe6ba25a1f6720f26b46..d9407e80c1b9c2a5edce1a22d70dc0aaf1abc06a 100644
--- a/src/LIB/SURCOUCHE/src/fmwrit_ll.f90
+++ b/src/LIB/SURCOUCHE/src/fmwrit_ll.f90
@@ -282,6 +282,7 @@ CONTAINS
     !
     CALL IO_WRITE_HEADER_NC4(TPFILE)
     !
+    CALL IO_WRITE_FIELD(TPFILE,'MNHVERSION',  NMNHVERSION)
     CALL IO_WRITE_FIELD(TPFILE,'MASDEV',      NMASDEV)
     CALL IO_WRITE_FIELD(TPFILE,'BUGFIX',      NBUGFIX)
     CALL IO_WRITE_FIELD(TPFILE,'BIBUSER',     CBIBUSER)
diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90
index 97a59426ae90a442d448da078946655741599274..9f237205f5e74ad0471222fa4797c0a472e3358f 100644
--- a/src/LIB/SURCOUCHE/src/mode_field.f90
+++ b/src/LIB/SURCOUCHE/src/mode_field.f90
@@ -132,6 +132,18 @@ CALL PRINT_MSG(NVERB_DEBUG,'GEN','INI_FIELD_LIST',YMSG)
 IDX = 1
 !
 IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
+TFIELDLIST(IDX)%CMNHNAME   = 'MNHVERSION'
+TFIELDLIST(IDX)%CSTDNAME   = ''
+TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH version'
+TFIELDLIST(IDX)%CUNITS     = ''
+TFIELDLIST(IDX)%CDIR       = '--'
+TFIELDLIST(IDX)%CCOMMENT   = ''
+TFIELDLIST(IDX)%NGRID      = 0
+TFIELDLIST(IDX)%NTYPE      = TYPEINT
+TFIELDLIST(IDX)%NDIMS      = 1
+IDX = IDX+1
+!
+IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST()
 TFIELDLIST(IDX)%CMNHNAME   = 'MASDEV'
 TFIELDLIST(IDX)%CSTDNAME   = ''
 TFIELDLIST(IDX)%CLONGNAME  = 'MesoNH version (without bugfix)'
diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90
index e3a7cf3e409871d76b372f2113fe72104786b7bf..03d39b4ea712b95d1bc782570ad6bd39017c5995 100644
--- a/src/LIB/SURCOUCHE/src/mode_fm.f90
+++ b/src/LIB/SURCOUCHE/src/mode_fm.f90
@@ -134,8 +134,11 @@ END SUBROUTINE FMLOOK_ll
 
 SUBROUTINE IO_FILE_OPEN_ll(TPFILE,HFIPRI,KRESP,OPARALLELIO)
 !
+USE MODD_CONF,  ONLY: NMNHVERSION
 USE MODD_IO_ll, ONLY: ISP,LIOCDF4,LLFIOUT,LLFIREAD,TFILEDATA
 USE MODE_FD_ll, ONLY: FD_ll,GETFD
+USE MODE_FIELD, ONLY: TFIELDDATA,TYPEINT
+USE MODE_FMREAD
 USE MODE_IO_MANAGE_STRUCT, ONLY: IO_FILE_FIND_BYNAME
 !
 TYPE(TFILEDATA),POINTER,INTENT(INOUT) :: TPFILE ! File structure
@@ -145,7 +148,11 @@ LOGICAL,                INTENT(IN),  OPTIONAL :: OPARALLELIO
 !
 INTEGER :: ININAR ! Number of articles present in LFI file (unused here)
 INTEGER :: IRESP
-TYPE(FD_ll), POINTER  :: TZFDLFI
+INTEGER :: IMASDEV,IBUGFIX
+INTEGER,DIMENSION(3)    :: IMNHVERSION
+CHARACTER(LEN=12)       :: YMNHVERSION_FILE,YMNHVERSION_CURR
+TYPE(FD_ll), POINTER    :: TZFDLFI
+TYPE(TFIELDDATA)        :: TZFIELD
 TYPE(TFILEDATA),POINTER :: TZFILE_DUMMY
 !
 CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_FILE_OPEN_ll','opening '//TRIM(TPFILE%CNAME)//' for '//TRIM(TPFILE%CMODE))
@@ -192,6 +199,65 @@ ELSE IF (TRIM(TPFILE%CMODE) /= 'READ' .AND. TRIM(TPFILE%CMODE) /= 'WRITE') THEN
   CALL PRINT_MSG(NVERB_FATAL,'IO','IO_FILE_OPEN_ll','unknown opening mode ('//TRIM(TPFILE%CMODE)//') for '//TRIM(TPFILE%CNAME))
 END IF
 !
+!Compare MNHVERSION of file with current version
+IF (TRIM(TPFILE%CMODE) == 'READ' .AND. ISP == TZFDLFI%OWNER) THEN
+  IMNHVERSION(:) = 0
+  !Use TZFIELD because TFIELDLIST could be not initialised
+  TZFIELD%CMNHNAME   = 'MNHVERSION'
+  TZFIELD%CSTDNAME   = ''
+  TZFIELD%CLONGNAME  = 'MesoNH version'
+  TZFIELD%CUNITS     = ''
+  TZFIELD%CDIR       = '--'
+  TZFIELD%CCOMMENT   = ''
+  TZFIELD%NGRID      = 0
+  TZFIELD%NTYPE      = TYPEINT
+  TZFIELD%NDIMS      = 1
+  CALL IO_READ_FIELD(TPFILE,TZFIELD,IMNHVERSION,IRESP)
+  IF (IRESP/=0) THEN
+    TZFIELD%CMNHNAME   = 'MASDEV'
+    TZFIELD%CLONGNAME  = 'MesoNH version (without bugfix)'
+    CALL IO_READ_FIELD(TPFILE,TZFIELD,IMASDEV,IRESP)
+    IF (IRESP/=0) THEN
+      CALL PRINT_MSG(NVERB_WARNING,'IO','IO_FILE_OPEN_ll','unknown MASDEV version for '//TRIM(TPFILE%CNAME))
+    ELSE
+      IMNHVERSION(1)=IMASDEV/10
+      IMNHVERSION(2)=MOD(IMASDEV,10)
+    END IF
+    !
+    TZFIELD%CMNHNAME   = 'BUGFIX'
+    TZFIELD%CLONGNAME  = 'MesoNH bugfix number'
+    CALL IO_READ_FIELD(TPFILE,TZFIELD,IBUGFIX,IRESP)
+    IF (IRESP/=0) THEN
+      CALL PRINT_MSG(NVERB_WARNING,'IO','IO_FILE_OPEN_ll','unknown BUGFIX version for '//TRIM(TPFILE%CNAME))
+    ELSE
+      IMNHVERSION(3)=IBUGFIX
+    END IF
+  END IF
+  !
+  WRITE(YMNHVERSION_FILE,"( I0,'.',I0,'.',I0 )" ) IMNHVERSION(1),IMNHVERSION(2),IMNHVERSION(3)
+  WRITE(YMNHVERSION_CURR,"( I0,'.',I0,'.',I0 )" ) NMNHVERSION(1),NMNHVERSION(2),NMNHVERSION(3)
+  !
+  IF ( IMNHVERSION(1)==0 .AND. IMNHVERSION(2)==0 .AND. IMNHVERSION(3)==0 ) THEN
+    CALL PRINT_MSG(NVERB_WARNING,'IO','IO_FILE_OPEN_ll','file '//TRIM(TPFILE%CNAME)//&
+                   ' was written with an unknown version of MesoNH')
+  ELSE IF (  IMNHVERSION(1)< NMNHVERSION(1) .OR. &
+            (IMNHVERSION(1)==NMNHVERSION(1) .AND. IMNHVERSION(2)< NMNHVERSION(2)) .OR. &
+            (IMNHVERSION(1)==NMNHVERSION(1) .AND. IMNHVERSION(2)==NMNHVERSION(2) .AND. IMNHVERSION(3)<NMNHVERSION(3)) ) THEN
+    CALL PRINT_MSG(NVERB_WARNING,'IO','IO_FILE_OPEN_ll','file '//TRIM(TPFILE%CNAME)//&
+                   ' was written with an older version of MesoNH ('//TRIM(YMNHVERSION_FILE)//&
+                   ' instead of '//TRIM(YMNHVERSION_CURR)//')')
+  ELSE IF (  IMNHVERSION(1)> NMNHVERSION(1) .OR. &
+            (IMNHVERSION(1)==NMNHVERSION(1) .AND. IMNHVERSION(2)> NMNHVERSION(2)) .OR. &
+            (IMNHVERSION(1)==NMNHVERSION(1) .AND. IMNHVERSION(2)==NMNHVERSION(2) .AND. IMNHVERSION(3)>NMNHVERSION(3)) ) THEN
+    CALL PRINT_MSG(NVERB_WARNING,'IO','IO_FILE_OPEN_ll','file '//TRIM(TPFILE%CNAME)//&
+                   ' was written with a more recent version of MesoNH ('//TRIM(YMNHVERSION_FILE)//&
+                   ' instead of '//TRIM(YMNHVERSION_CURR)//')')
+  ELSE
+    CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_FILE_OPEN_ll','file '//TRIM(TPFILE%CNAME)//&
+                   ' was written with the same version of MesoNH ('//TRIM(YMNHVERSION_CURR)//')')
+  END IF
+END IF
+!
 END SUBROUTINE IO_FILE_OPEN_ll
 
 SUBROUTINE FMOPEN_ll(HFILEM,HACTION,HFIPRI,KNPRAR,KFTYPE,KVERB,KNINAR&
diff --git a/src/MNH/modd_conf.f90 b/src/MNH/modd_conf.f90
index 0548761c6f358639de5e313e5133415783f3d1e8..d57b11497ae41c222c3ef821b59d653f22efd1c7 100644
--- a/src/MNH/modd_conf.f90
+++ b/src/MNH/modd_conf.f90
@@ -99,6 +99,7 @@ CHARACTER (LEN=3),SAVE :: CEQNSYS! EQuatioN SYStem resolved by the MESONH model
 LOGICAL,SAVE      :: LPACK       ! Logical to compress 1D or 2D FM files
 !
 !
+INTEGER,DIMENSION(3),SAVE :: NMNHVERSION ! Version of MesoNH
 INTEGER,SAVE :: NMASDEV           ! NMASDEV=XY corresponds to the masdevX_Y
 INTEGER,SAVE :: NBUGFIX           ! NBUGFIX=n corresponds to the BUGn of masdevX_Y
 CHARACTER(LEN=10),SAVE :: CBIBUSER! CBIBUSER is the name of the user binary library
diff --git a/src/MNH/version.f90 b/src/MNH/version.f90
index 0543cfb328aa7d7e3e940ba10234fdfc0cc7b6c9..c54619c640fe85aa45b0e777ecb12e8d02e21f17 100644
--- a/src/MNH/version.f90
+++ b/src/MNH/version.f90
@@ -38,10 +38,13 @@
 !
 !*       0.    DECLARATIONS
 !              ------------
-USE MODD_CONF, ONLY : NMASDEV,NBUGFIX,CBIBUSER
+USE MODD_CONF, ONLY : NMNHVERSION,NMASDEV,NBUGFIX,CBIBUSER
 !
 IMPLICIT NONE
 !
+NMNHVERSION(1)=5
+NMNHVERSION(2)=3
+NMNHVERSION(3)=0
 NMASDEV=53 
 NBUGFIX=0
 CBIBUSER=''