diff --git a/src/MNH/aircraft_balloon.f90 b/src/MNH/aircraft_balloon.f90
index 4311c540685418f775ed75094c50aafe534908a6..5027747f5b37e84b67044d420c7c0a08ef174b94 100644
--- a/src/MNH/aircraft_balloon.f90
+++ b/src/MNH/aircraft_balloon.f90
@@ -240,7 +240,12 @@ IF ( ISP == NFLYER_DEFAULT_RANK ) THEN
     IF ( .NOT. TZBALLOON%LPOSITION_INIT ) THEN
       TZBALLOON%LPOSITION_INIT = .TRUE.
       ! Get rank of the process where the balloon is and the model number
-      CALL FLYER_GET_RANK_MODEL_ISCRASHED( TZBALLOON, PX = TZBALLOON%XXLAUNCH, PY = TZBALLOON%XYLAUNCH )
+      IF ( TZBALLOON%LFLY ) THEN
+        ! In this case, we are in a restart and the balloon position was read in the restart file
+        CALL FLYER_GET_RANK_MODEL_ISCRASHED( TZBALLOON )
+      ELSE
+        CALL FLYER_GET_RANK_MODEL_ISCRASHED( TZBALLOON, PX = TZBALLOON%XXLAUNCH, PY = TZBALLOON%XYLAUNCH )
+      END IF
       IF ( TZBALLOON%LCRASH ) THEN
         CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'AIRCRAFT_BALLOON', 'balloon ' // TRIM( TZBALLOON%CTITLE ) &
                         // ': launch coordinates are outside of horizontal physical domain' )
diff --git a/src/MNH/ini_aircraft_balloon.f90 b/src/MNH/ini_aircraft_balloon.f90
index 5fa73b17a2206f866c1c7bf923baa130ee86291d..61e6349733aadbc2fa057d9de6cd011fa4a32dcf 100644
--- a/src/MNH/ini_aircraft_balloon.f90
+++ b/src/MNH/ini_aircraft_balloon.f90
@@ -188,9 +188,9 @@ USE NETCDF,             ONLY: NF90_INQ_NCID, NF90_NOERR
 use modd_field,         only: tfieldmetadata, TYPEREAL
 USE MODD_IO,            ONLY: GSMONOPROC, ISP, TFILEDATA
 #ifdef MNH_IOCDF4
-USE MODD_MPIF
-USE MODD_PRECISION,     ONLY: CDFINT, CDFINT_MPI
+USE MODD_PRECISION,     ONLY: CDFINT
 #endif
+USE MODD_TIME_n,        ONLY: TDTCUR
 
 use MODE_IO_FIELD_READ, only: IO_Field_read
 
@@ -198,10 +198,8 @@ INTEGER,             INTENT(IN)    :: KNBR
 CLASS(TBALLOONDATA), INTENT(INOUT) :: TPFLYER
 
 #ifdef MNH_IOCDF4
-INTEGER              :: IERR
 INTEGER(KIND=CDFINT) :: IGROUPID
 INTEGER(KIND=CDFINT) :: ISTATUS
-INTEGER(KIND=CDFINT), DIMENSION(2) :: IDATA ! Intermediate array to allow merge of 2 MPI broadcasts
 #endif
 INTEGER :: IMODEL
 INTEGER :: IRESP  ! return code
@@ -306,12 +304,9 @@ IF ( CPROGRAM == 'MESONH' .OR. CPROGRAM == 'SPAWN ' .OR. CPROGRAM == 'REAL  ' )
 #ifdef MNH_IOCDF4
   ELSE
     ! Read in netCDF file (new structure since MesoNH 5.6)
-    IF ( ISP == TPINIFILE%NMASTER_RANK ) ISTATUS = NF90_INQ_NCID( TPINIFILE%NNCID, TRIM( TPFLYER%CTITLE ), IGROUPID )
+    IF ( ISP /= TPINIFILE%NMASTER_RANK )  CALL PRINT_MSG( NVERB_ERROR, 'IO', 'INI_LAUNCH', 'process is not the file master process')
 
-    IDATA(:) = [ ISTATUS, IGROUPID ] ! Merge 2 broadcasts into 1
-    CALL MPI_BCAST( IDATA, SIZE( IDATA ), CDFINT_MPI, TPINIFILE%NMASTER_RANK - 1, TPINIFILE%NMPICOMM, IERR )
-    ISTATUS  = IDATA(1)
-    IGROUPID = IDATA(2)
+    ISTATUS = NF90_INQ_NCID( TPINIFILE%NNCID, TRIM( TPFLYER%CTITLE ), IGROUPID )
 
     IF ( ISTATUS == NF90_NOERR ) THEN
       GREAD = .TRUE.
@@ -393,6 +388,7 @@ IF ( CPROGRAM == 'MESONH' .OR. CPROGRAM == 'SPAWN ' .OR. CPROGRAM == 'REAL  ' )
     CALL SM_XYHAT( PLATOR, PLONOR, ZLAT, ZLON, TPFLYER%XX_CUR, TPFLYER%XY_CUR )
 
     TPFLYER%LFLY = .TRUE.
+    TPFLYER%TPOS_CUR = TDTCUR
 
     CMNHMSG(1) = 'current location read from synchronous file for ' // TRIM( TPFLYER%CTITLE )
     IF (TPFLYER%CTYPE== 'CVBALL') THEN