diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90
index c7f998073b949330d2373d35e8062d6b5b0af8bd..cd9f74ac16fba58ff9cc3490cf07885dd3743f45 100644
--- a/src/MNH/read_exsegn.f90
+++ b/src/MNH/read_exsegn.f90
@@ -579,9 +579,9 @@ IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_EOL_ADR)
 CALL POSNAM( TPEXSEGFILE, 'NAM_EOL_ALM', GFOUND )
 IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_EOL_ALM)
 CALL POSNAM( TPEXSEGFILE, 'NAM_PROFILERN', GFOUND )
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PROFILERn)
+IF (GFOUND) CALL READ_PROFILERN_NML()
 CALL POSNAM( TPEXSEGFILE, 'NAM_STATIONN', GFOUND )
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_STATIONn)
+IF (GFOUND) CALL READ_STATIONN_NML()
 CALL POSNAM( TPEXSEGFILE, 'NAM_FIREN', GFOUND )
 IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_FIREn)
 !
@@ -3109,4 +3109,21 @@ WRITE(UNIT=ILUOUT,FMT='(/)')
 !
 !-------------------------------------------------------------------------------
 !
+CONTAINS
+  SUBROUTINE READ_PROFILERN_NML()
+    ! This intermediate subroutine is necessary to work around a bug in the gfortran compiler
+    ! (versions > 13: at least 14.1.0 and 14.2.0)
+    USE MODN_PROFILER_n
+
+    READ(UNIT=ILUSEG,NML=NAM_PROFILERn)
+  END SUBROUTINE READ_PROFILERN_NML
+
+  SUBROUTINE READ_STATIONN_NML()
+    ! This intermediate subroutine is necessary to work around a bug in the gfortran compiler
+    ! (versions > 13: at least 14.1.0 and 14.2.0)
+    USE MODN_STATION_n
+
+    READ(UNIT=ILUSEG,NML=NAM_STATIONn)
+  END SUBROUTINE READ_STATIONN_NML
+
 END SUBROUTINE READ_EXSEG_n
diff --git a/src/MNH/write_desfmn.f90 b/src/MNH/write_desfmn.f90
index 207db65bb7679bc719d8779734a3b128e62259b5..f03405a2493b187391c63f3b9f8e52e4dc7f41af 100644
--- a/src/MNH/write_desfmn.f90
+++ b/src/MNH/write_desfmn.f90
@@ -404,10 +404,10 @@ IF(LBLOWSNOW) WRITE(UNIT=ILUSEG,NML=NAM_BLOWSNOWn)
 IF(LBLOWSNOW) WRITE(UNIT=ILUSEG,NML=NAM_BLOWSNOW)
 !
 CALL INIT_NAM_PROFILERn
-IF(LPROFILER) WRITE(UNIT=ILUSEG,NML=NAM_PROFILERn)
+IF(LPROFILER) CALL WRITE_PROFILERN_NML()
 !
 CALL INIT_NAM_STATIONn
-IF(LSTATION) WRITE(UNIT=ILUSEG,NML=NAM_STATIONn)
+IF(LSTATION) CALL WRITE_STATIONN_NML()
 !
 IF(LDUST) WRITE(UNIT=ILUSEG,NML=NAM_DUST)
 IF(LSALT) WRITE(UNIT=ILUSEG,NML=NAM_SALT)
@@ -723,4 +723,21 @@ ENDIF
 CALL UPDATE_NAM_DYNn
 !------------------------------------------------------------------------------
 !
+CONTAINS
+  SUBROUTINE WRITE_PROFILERN_NML()
+    ! This intermediate subroutine is necessary to work around a bug in the gfortran compiler
+    ! (versions > 13: at least 14.1.0 and 14.2.0)
+    USE MODN_PROFILER_n
+
+    WRITE(UNIT=ILUSEG,NML=NAM_PROFILERn)
+  END SUBROUTINE WRITE_PROFILERN_NML
+
+  SUBROUTINE WRITE_STATIONN_NML()
+    ! This intermediate subroutine is necessary to work around a bug in the gfortran compiler
+    ! (versions > 13: at least 14.1.0 and 14.2.0)
+    USE MODN_STATION_n
+
+    WRITE(UNIT=ILUSEG,NML=NAM_STATIONn)
+  END SUBROUTINE WRITE_STATIONN_NML
+
 END SUBROUTINE WRITE_DESFM_n