diff --git a/src/MNH/write_desfmn.f90 b/src/MNH/write_desfmn.f90
index fc96071c8c8ae39e628d89700febd2003da034a3..f91e265294da2ac821b13220e02d7e43421421c6 100644
--- a/src/MNH/write_desfmn.f90
+++ b/src/MNH/write_desfmn.f90
@@ -506,42 +506,55 @@ IF (NVERB >= 5) THEN
     WRITE(UNIT=ILUOUT,FMT="('************ BUDGET ***************************')")
     WRITE(UNIT=ILUOUT,NML=NAM_BUDGET)
 !    
+    IF ( .NOT. ALLOCATED( CBULIST_RU ) ) ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RU(0) )
     WRITE(UNIT=ILUOUT,FMT="('************ U BUDGET *************************')")
     WRITE(UNIT=ILUOUT,NML=NAM_BU_RU)
-!    
+!
+    IF ( .NOT. ALLOCATED( CBULIST_RV ) ) ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RV(0) )
     WRITE(UNIT=ILUOUT,FMT="('************ V BUDGET *************************')")
     WRITE(UNIT=ILUOUT,NML=NAM_BU_RV)
 !    
+    IF ( .NOT. ALLOCATED( CBULIST_RW ) ) ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RW(0) )
     WRITE(UNIT=ILUOUT,FMT="('************ W BUDGET *************************')")
     WRITE(UNIT=ILUOUT,NML=NAM_BU_RW)
 !    
+    IF ( .NOT. ALLOCATED( CBULIST_RTH ) ) ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RTH(0) )
     WRITE(UNIT=ILUOUT,FMT="('************ TH BUDGET ************************')")
     WRITE(UNIT=ILUOUT,NML=NAM_BU_RTH)
 !    
+    IF ( .NOT. ALLOCATED( CBULIST_RTKE ) ) ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RTKE(0) )
     WRITE(UNIT=ILUOUT,FMT="('************ TKE BUDGET ***********************')")
     WRITE(UNIT=ILUOUT,NML=NAM_BU_RTKE)
 !    
+    IF ( .NOT. ALLOCATED( CBULIST_RRV ) ) ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRV(0) )
     WRITE(UNIT=ILUOUT,FMT="('************ RV BUDGET ************************')")
     WRITE(UNIT=ILUOUT,NML=NAM_BU_RRV)
 !    
+    IF ( .NOT. ALLOCATED( CBULIST_RRC ) ) ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRC(0) )
     WRITE(UNIT=ILUOUT,FMT="('************ RC BUDGET ************************')")
     WRITE(UNIT=ILUOUT,NML=NAM_BU_RRC)
 !    
+    IF ( .NOT. ALLOCATED( CBULIST_RRR ) ) ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRR(0) )
     WRITE(UNIT=ILUOUT,FMT="('************ RR BUDGET ************************')")
     WRITE(UNIT=ILUOUT,NML=NAM_BU_RRR)
 !    
+    IF ( .NOT. ALLOCATED( CBULIST_RRI ) ) ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRI(0) )
     WRITE(UNIT=ILUOUT,FMT="('************ RI BUDGET ************************')")
     WRITE(UNIT=ILUOUT,NML=NAM_BU_RRI)
 !    
+    IF ( .NOT. ALLOCATED( CBULIST_RRS ) ) ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRS(0) )
     WRITE(UNIT=ILUOUT,FMT="('************ RS BUDGET ************************')")
     WRITE(UNIT=ILUOUT,NML=NAM_BU_RRS)
 !    
+    IF ( .NOT. ALLOCATED( CBULIST_RRG ) ) ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRG(0) )
     WRITE(UNIT=ILUOUT,FMT="('************ RG BUDGET ************************')")
     WRITE(UNIT=ILUOUT,NML=NAM_BU_RRG)
 !    
+    IF ( .NOT. ALLOCATED( CBULIST_RRH ) ) ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RRH(0) )
     WRITE(UNIT=ILUOUT,FMT="('************ RH BUDGET ************************')")
     WRITE(UNIT=ILUOUT,NML=NAM_BU_RRH)
 !
+    IF ( .NOT. ALLOCATED( CBULIST_RSV ) ) ALLOCATE( CHARACTER(LEN=NBULISTMAXLEN) :: CBULIST_RSV(0) )
     WRITE(UNIT=ILUOUT,FMT="('************ SVx BUDGET ***********************')")
     WRITE(UNIT=ILUOUT,NML=NAM_BU_RSV)
 !