diff --git a/src/MNH/modd_budget.f90 b/src/MNH/modd_budget.f90
index 3db13890c0f0eeffccdb98cef040fd194d96345c..44a3cfff0e0cdd4c5a930be3631aadba593c9ef9 100644
--- a/src/MNH/modd_budget.f90
+++ b/src/MNH/modd_budget.f90
@@ -108,6 +108,9 @@ type :: tbudiachrometadata
   character(len=NBUNAMELGTMAX)  :: cname       = 'not set'
   character(len=NCOMMENTLGTMAX) :: ccomment    = 'not set'
   character(len=NBUNAMELGTMAX)  :: ctype       = 'not set'
+  character(len=NBUNAMELGTMAX)  :: ccategory   = 'not set' !budget, LES, aircraft, balloon, series, station, profiler
+  character(len=NBUNAMELGTMAX)  :: cshape      = 'not set' !Shape of the domain (mask, cartesian, vertical profile, point)
+  logical :: lmobile    = .false.                          !Is the domain moving? (ie for aircrafts and balloons)
   logical :: licompress = .false.
   logical :: ljcompress = .false.
   logical :: lkcompress = .false.
diff --git a/src/MNH/mode_les_diachro.f90 b/src/MNH/mode_les_diachro.f90
index 6627a8eff08a032e77f4391ecf414a04e710e904..27764a382b7ad500d65dfde90516e50bcbb897df 100644
--- a/src/MNH/mode_les_diachro.f90
+++ b/src/MNH/mode_les_diachro.f90
@@ -1029,6 +1029,9 @@ if ( iresp == 0 .and. any( zfield /= XUNDEF ) ) then
   !tzbudiachro%ccomment   = DONE BEFORE
 !   tzbudiachro%ctype      = 'SSOL'
   tzbudiachro%ctype      = 'TLES' !T for trajectory (used in Write_diachro_lfi to add trajectory terms)
+  tzbudiachro%ccategory  = 'LES'
+  tzbudiachro%cshape     = 'cartesian'
+  tzbudiachro%lmobile    = .false.
   tzbudiachro%licompress = .false.
   tzbudiachro%ljcompress = .false.
   tzbudiachro%lkcompress = .false.
@@ -1207,6 +1210,9 @@ else
   tzbudiachro%ccomment = Trim( tzfield%ccomment ) // ' (time averaged)'
 end if
 tzbudiachro%ctype      = 'SPXY'
+tzbudiachro%ccategory  = 'LES'
+tzbudiachro%cshape     = 'spectrum'
+tzbudiachro%lmobile    = .false.
 tzbudiachro%licompress = .false.
 tzbudiachro%ljcompress = .false.
 tzbudiachro%lkcompress = .false.
@@ -1360,6 +1366,9 @@ tzbudiachro%cgroupname = ygroup
 tzbudiachro%cname      = ygroup
 tzbudiachro%ccomment   = tzfield%ccomment
 tzbudiachro%ctype      = 'SPXY'
+tzbudiachro%ccategory  = 'LES'
+tzbudiachro%cshape     = 'spectrum'
+tzbudiachro%lmobile    = .false.
 tzbudiachro%licompress = .false.
 tzbudiachro%ljcompress = .false.
 tzbudiachro%lkcompress = .false.
@@ -1385,6 +1394,9 @@ tzbudiachro%cgroupname = ygroup
 tzbudiachro%cname      = ygroup
 tzbudiachro%ccomment   = Trim( tzfield%ccomment ) // ' (time averaged)'
 tzbudiachro%ctype      = 'SPXY'
+tzbudiachro%ccategory  = 'LES'
+tzbudiachro%cshape     = 'spectrum'
+tzbudiachro%lmobile    = .false.
 tzbudiachro%licompress = .false.
 tzbudiachro%ljcompress = .false.
 tzbudiachro%lkcompress = .false.
diff --git a/src/MNH/write_aircraft_balloon.f90 b/src/MNH/write_aircraft_balloon.f90
index 2ff4254e6919fef020bc6b40a468b17011e74538..993ce2f91077560b34f1509d56bbf6b637145d2b 100644
--- a/src/MNH/write_aircraft_balloon.f90
+++ b/src/MNH/write_aircraft_balloon.f90
@@ -105,6 +105,7 @@ USE MODD_PARAM_LIMA     , ONLY: NINDICE_CCN_IMM,NMOD_CCN,NMOD_IFN,NMOD_IMM
 USE MODE_MODELN_HANDLER
 USE MODE_DUST_PSD
 USE MODE_AERO_PSD
+use mode_msg
 use mode_write_diachro,   only: Write_diachro
 !
 IMPLICIT NONE
@@ -855,6 +856,20 @@ tzbudiachro%cgroupname = ygroup
 tzbudiachro%cname      = ygroup
 tzbudiachro%ccomment   = 'Values at position of flyer ' // Trim( tpflyer%title )
 tzbudiachro%ctype      = 'RSPL'
+if ( Trim( tpflyer%type ) == 'AIRCRA' ) then
+  tzbudiachro%ccategory  = 'aircraft'
+else if ( Trim( tpflyer%type ) == 'RADIOS' ) then
+  tzbudiachro%ccategory  = 'radiosonde balloon'
+else if ( Trim( tpflyer%type ) == 'ISODEN' ) then
+  tzbudiachro%ccategory  = 'iso-density balloon'
+else if ( Trim( tpflyer%type ) == 'CVBALL' ) then
+  tzbudiachro%ccategory  = 'constant volume balloon'
+else
+  call Print_msg( NVERB_ERROR, 'IO', 'WRITE_AIRCRAFT_BALLOON', 'unknown category for flyer ' // Trim( tpflyer%title ) )
+  tzbudiachro%ccategory  = 'unknown'
+end if
+tzbudiachro%cshape     = 'point'
+tzbudiachro%lmobile    = .true.
 ! tzbudiachro%licompress = NOT SET (default values)
 ! tzbudiachro%ljcompress = NOT SET (default values)
 ! tzbudiachro%lkcompress = NOT SET (default values)
@@ -891,6 +906,9 @@ tzbudiachro%cgroupname = ygroupz
 tzbudiachro%cname      = ygroupz
 tzbudiachro%ccomment   = 'Vertical profiles at position of flyer ' // Trim( tpflyer%title )
 tzbudiachro%ctype      = 'CART'
+! tzbudiachro%ccategory  =  !unchanged
+tzbudiachro%cshape     = 'vertical profile'
+tzbudiachro%lmobile    = .true.
 tzbudiachro%licompress = .true.
 tzbudiachro%ljcompress = .true.
 tzbudiachro%lkcompress = .false.
diff --git a/src/MNH/write_budget.f90 b/src/MNH/write_budget.f90
index 72a9ec46ffa25a9c5644d90e1cbf28f9d2d843db..be4f2d5a2d56ce97923cd3cf146b6b3a04ba3816 100644
--- a/src/MNH/write_budget.f90
+++ b/src/MNH/write_budget.f90
@@ -559,6 +559,13 @@ subroutine Store_one_budget_rho( tpdiafile, tpdates, tprhodj, kp, knocompress, p
   tzbudiachro%cname      = tprhodj%cmnhname
   tzbudiachro%ccomment   = tprhodj%ccomment
   tzbudiachro%ctype      = ybutype
+  tzbudiachro%ccategory  = 'budget'
+  if ( ybutype == 'CART' ) then
+    tzbudiachro%cshape   = 'cartesian'
+  else
+    tzbudiachro%cshape   = 'mask'
+  end if
+  tzbudiachro%lmobile    = .false.
   tzbudiachro%licompress = lbu_icp
   tzbudiachro%ljcompress = lbu_jcp
   tzbudiachro%lkcompress = lbu_kcp
@@ -805,6 +812,13 @@ subroutine Store_one_budget( tpdiafile, tpdates, tpbudget, prhodjn, knocompress,
   tzbudiachro%cname      = tpbudget%cname
   tzbudiachro%ccomment   = tpbudget%ccomment
   tzbudiachro%ctype      = ybutype
+  tzbudiachro%ccategory  = 'budget'
+  if ( ybutype == 'CART' ) then
+    tzbudiachro%cshape   = 'cartesian'
+  else
+    tzbudiachro%cshape   = 'mask'
+  end if
+  tzbudiachro%lmobile    = .false.
   tzbudiachro%licompress = lbu_icp
   tzbudiachro%ljcompress = lbu_jcp
   tzbudiachro%lkcompress = lbu_kcp
diff --git a/src/MNH/write_profilern.f90 b/src/MNH/write_profilern.f90
index eba14d51eefe087361d40342f1074f1888ef3ff0..e0ed5fcfd6b4bb0d8e4117996d9d8a85f67da5e1 100644
--- a/src/MNH/write_profilern.f90
+++ b/src/MNH/write_profilern.f90
@@ -654,6 +654,9 @@ tzbudiachro%cgroupname = ygroup
 tzbudiachro%cname      = ygroup
 tzbudiachro%ccomment   = 'Vertical profiles at position of profiler ' // Trim( ygroup )
 tzbudiachro%ctype      = 'CART'
+tzbudiachro%ccategory  = 'profiler'
+tzbudiachro%cshape     = 'vertical profile'
+tzbudiachro%lmobile    = .false.
 tzbudiachro%licompress = .true.
 tzbudiachro%ljcompress = .true.
 tzbudiachro%lkcompress = .false.
diff --git a/src/MNH/write_seriesn.f90 b/src/MNH/write_seriesn.f90
index 1729e726dc566c4a82eb7e346b6e1328f609de71..e0aa67be2a6e3884202bd00288f5cbff50d3594c 100644
--- a/src/MNH/write_seriesn.f90
+++ b/src/MNH/write_seriesn.f90
@@ -263,15 +263,18 @@ tzbudiachro%cgroupname = 'TSERIES'
 tzbudiachro%cname      = 'TSERIES'
 tzbudiachro%ccomment   = 'Time series of horizontally and vertically averaged fields'
 tzbudiachro%ctype      = 'CART'
+tzbudiachro%ccategory  = 'time series'
+tzbudiachro%cshape     = 'cartesian' !It is based on a cartesian domain (with compression in all directions)
+tzbudiachro%lmobile    = .false.
 tzbudiachro%licompress = .true.
 tzbudiachro%ljcompress = .true.
 tzbudiachro%lkcompress = .true.
-tzbudiachro%nil        = 1
-tzbudiachro%nih        = 1
-tzbudiachro%njl        = 1
-tzbudiachro%njh        = 1
+tzbudiachro%nil        = niboxl
+tzbudiachro%nih        = niboxh
+tzbudiachro%njl        = njboxl
+tzbudiachro%njh        = njboxh
 tzbudiachro%nkl        = 1
-tzbudiachro%nkh        = 1
+tzbudiachro%nkh        = ikmax
 
 call Write_diachro( tpdiafile, tzbudiachro, tzfields, tpsdates(1:nsnbstept), &
                     xsseries1(1:1,1:1,1:1,1:nsnbstept,1:1,:)                 )
@@ -355,15 +358,18 @@ tzbudiachro%cgroupname = 'ZTSERIES'
 tzbudiachro%cname      = 'ZTSERIES'
 tzbudiachro%ccomment   = 'Time series of horizontally averaged vertical profile'
 tzbudiachro%ctype      = 'CART'
+tzbudiachro%ccategory  = 'time series'
+tzbudiachro%cshape     = 'cartesian'  !It is based on a cartesian domain (with horizontal compression)
+tzbudiachro%lmobile    = .false.
 tzbudiachro%licompress = .true.
 tzbudiachro%ljcompress = .true.
 tzbudiachro%lkcompress = .false.
-tzbudiachro%nil        = 1
-tzbudiachro%nih        = 1
-tzbudiachro%njl        = 1
-tzbudiachro%njh        = 1
-tzbudiachro%nkl        = ikb
-tzbudiachro%nkh        = ike
+tzbudiachro%nil        = niboxl
+tzbudiachro%nih        = niboxh
+tzbudiachro%njl        = njboxl
+tzbudiachro%njh        = njboxh
+tzbudiachro%nkl        = 1
+tzbudiachro%nkh        = ikmax
 
 call Write_diachro( tpdiafile, tzbudiachro, tzfields, tpsdates(1:nsnbstept), &
                     xsseries2(1:1,1:1,1:ikmax,1:nsnbstept,1:1,:)             )
@@ -451,6 +457,9 @@ DO JS=1,NBJSLICE
   tzbudiachro%cname      = ygroup
   tzbudiachro%ccomment   = 'Time series of y-horizontally averaged fields at one level or vertically averaged between 2 levels'
   tzbudiachro%ctype      = 'SSOL'
+  tzbudiachro%ccategory  = 'time series'
+  tzbudiachro%cshape     = 'cartesian' !It is based on a cartesian domain (with compression in 1 direction)
+  tzbudiachro%lmobile    = .false.
   tzbudiachro%licompress = .false.
   tzbudiachro%ljcompress = .true.
   tzbudiachro%lkcompress = .true.
diff --git a/src/MNH/write_stationn.f90 b/src/MNH/write_stationn.f90
index 2c6f6553ffdf971f184ffba397635e65cdff1032..ecacfb93518111d04e6787461c881bb4f14c4648 100644
--- a/src/MNH/write_stationn.f90
+++ b/src/MNH/write_stationn.f90
@@ -739,6 +739,9 @@ tzbudiachro%cgroupname = ygroup
 tzbudiachro%cname      = ygroup
 tzbudiachro%ccomment   = 'Values at position of station ' // Trim( ygroup )
 tzbudiachro%ctype      = 'CART'
+tzbudiachro%ccategory  = 'station'
+tzbudiachro%cshape     = 'point'
+tzbudiachro%lmobile    = .false.
 tzbudiachro%licompress = .true.
 tzbudiachro%ljcompress = .true.
 tzbudiachro%lkcompress = .false.