diff --git a/src/MNH/blowsnow.f90 b/src/MNH/blowsnow.f90
index 2c004373072b2eb15f474d07ed56620ebe8bf12b..1bb69443c080ed425a3e753a5e243c8660f00940 100644
--- a/src/MNH/blowsnow.f90
+++ b/src/MNH/blowsnow.f90
@@ -88,9 +88,12 @@ END MODULE MODI_BLOWSNOW
 !*       0.    DECLARATIONS
 !
 USE MODD_BLOWSNOW_n,       only: LSNOWSUBL
+use modd_budget,           only: lbudget_sv, NBUDGET_SV1, tbudgets
 USE MODD_NSV,              only: NSV_SNWBEG, NSV_SNWEND
 USE MODD_PARAMETERS,       only: JPHEXT, JPVEXT
 
+use mode_budget,           only: Budget_store_init, Budget_store_end
+
 USE MODI_BLOWSNOW_VELGRAV
 USE MODI_SEDIM_BLOWSNOW
 USE MODI_SUBL_BLOWSNOW
@@ -213,6 +216,13 @@ END IF
 !*       5.     Sedimentation 
 !               ------------------------
 !
+!Remark: budgets not done in SEDIM_BLOWSNOW because arrays are not complete in it
+if ( lbudget_sv ) then
+  do jsv = nsv_snwbeg, nsv_snwend
+    call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + jsv), 'SNSED', psvs(:, :, :, jsv) * prhodj(:, :, :) )
+  end do
+end if
+
 CALL SEDIM_BLOWSNOW(PTHT(IIB:IIE,IJB:IJE,IKB:IKE), PTSTEP,&
                   PRHODREF(IIB:IIE,IJB:IJE,IKB:IKE),         &
                   PZZ(IIB:IIE,IJB:IJE,IKB:IKE+1),            &
@@ -236,5 +246,10 @@ DO  JSV = NSV_SNWBEG, NSV_SNWEND
   PSVS(:,:,:,JSV) = PSVS(:,:,:,JSV) * PRHODJ(:,:,:)
 END DO
 
+if ( lbudget_sv ) then
+  do jsv = nsv_snwbeg, nsv_snwend
+    call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + jsv), 'SNSED', psvs(:, :, :, jsv) )
+  end do
+end if
 
 END SUBROUTINE BLOWSNOW
diff --git a/src/MNH/ini_budget.f90 b/src/MNH/ini_budget.f90
index b282ed84b6f7814f43cf466e150ae94f1ad01d64..d0be92f6b18304f6a5ecffe856bcbce179c4488f 100644
--- a/src/MNH/ini_budget.f90
+++ b/src/MNH/ini_budget.f90
@@ -205,12 +205,15 @@ end subroutine Budget_preallocate
 !  P. Wautelet 03/02/2021: budgets: add new source if LIMA splitting: CORR2
 !  P. Wautelet 10/02/2021: budgets: add missing sources for NSV_C2R2BEG+3 budget
 !  P. Wautelet 11/02/2021: budgets: add missing term SCAV for NSV_LIMA_SCAVMASS budget
+!  P. Wautelet 02/03/2021: budgets: add terms for blowing snow
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
 !              ------------ 
 !
 use modd_2d_frc,        only: l2d_adv_frc, l2d_rel_frc
+use modd_blowsnow,      only: lblowsnow
+use modd_blowsnow_n,    only: lsnowsubl
 use modd_budget
 use modd_ch_aerosol,    only: lorilam
 use modd_conf,          only: l1d, lcartesian, lforcing, lthinshell, nmodel
@@ -891,7 +894,7 @@ if ( lbu_rth ) then
 
   !Allocate all basic source terms (used or not)
   !The size should be large enough (bigger than necessary is OK)
-  isourcesmax = 52
+  isourcesmax = 53
   tbudgets(NBUDGET_TH)%nsourcesmax = isourcesmax
   allocate( tbudgets(NBUDGET_TH)%tsources(isourcesmax) )
 
@@ -1002,6 +1005,11 @@ if ( lbu_rth ) then
   tzsource%clongname = 'mass flux'
   call Budget_source_add( tbudgets(NBUDGET_TH), tzsource, gcond, nmaflth )
 
+  gcond = lblowsnow .and. lsnowsubl
+  tzsource%cmnhname  = 'SNSUB'
+  tzsource%clongname = 'blowing snow sublimation'
+  call Budget_source_add( tbudgets(NBUDGET_TH), tzsource, gcond, nsnsubth )
+
   gcond = lvisc .and. lvisc_th
   tzsource%cmnhname  = 'VISC'
   tzsource%clongname = 'viscosity'
@@ -1281,7 +1289,7 @@ if ( tbudgets(NBUDGET_RV)%lenabled ) then
 
   !Allocate all basic source terms (used or not)
   !The size should be large enough (bigger than necessary is OK)
-  isourcesmax = 33
+  isourcesmax = 34
   tbudgets(NBUDGET_RV)%nsourcesmax = isourcesmax
   allocate( tbudgets(NBUDGET_RV)%tsources(isourcesmax) )
 
@@ -1377,6 +1385,11 @@ if ( tbudgets(NBUDGET_RV)%lenabled ) then
   tzsource%clongname = 'mass flux'
   call Budget_source_add( tbudgets(NBUDGET_RV), tzsource, gcond, nmaflrv )
 
+  gcond = lblowsnow .and. lsnowsubl
+  tzsource%cmnhname  = 'SNSUB'
+  tzsource%clongname = 'blowing snow sublimation'
+  call Budget_source_add( tbudgets(NBUDGET_RV), tzsource, gcond, nsnsubrv )
+
   gcond = lvisc .and. lvisc_r
   tzsource%cmnhname  = 'VISC'
   tzsource%clongname = 'viscosity'
@@ -3886,6 +3899,16 @@ SV_BUDGETS: do jsv = 1, ksv
 
     else if ( jsv >= nsv_snwbeg .and. jsv <= nsv_snwend ) then SV_VAR
       !Snow
+      gcond = lblowsnow .and. lsnowsubl
+      tzsource%cmnhname  = 'SNSUB'
+      tzsource%clongname = 'blowing snow sublimation'
+      call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nsnsubsv )
+
+      gcond = lblowsnow
+      tzsource%cmnhname  = 'SNSED'
+      tzsource%clongname = 'blowing snow sedimentation'
+      call Budget_source_add( tbudgets(ibudget), tzsource, gcond, nsnsedsv )
+
 
     else if ( jsv >= nsv_lnoxbeg .and. jsv <= nsv_lnoxend ) then SV_VAR
       !LiNOX passive tracer
diff --git a/src/MNH/modd_budget.f90 b/src/MNH/modd_budget.f90
index 6b883941bf2b80a7e408fdf59d692806277fe993..0b2179f5982711a9f720470973da0bae20eb90a1 100644
--- a/src/MNH/modd_budget.f90
+++ b/src/MNH/modd_budget.f90
@@ -60,6 +60,7 @@
 !  P. Wautelet 11/01/2021: remove nbuwrnb (replaced by nbusubwrite)
 !  P. Wautelet 14/01/2021: change xbusurf type to integer (+ rename it to nbusurf)
 !  P. Wautelet 03/02/2021: budgets: add new source if LIMA splitting: CORR2
+!  P. Wautelet 02/03/2021: budgets: add terms for blowing snow
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -296,6 +297,7 @@ INTEGER, SAVE :: NRELTH   = 0  ! relaxation
 INTEGER, SAVE :: NRADTH   = 0  ! RADiation
 INTEGER, SAVE :: NDCONVTH = 0  ! KAFR CONVection
 INTEGER, SAVE :: NMAFLTH  = 0  ! Mass flux
+INTEGER, SAVE :: NSNSUBTH = 0  ! Blowing snow sublimation
 INTEGER, SAVE :: NHTURBTH = 0  ! horizontal turbulence
 INTEGER, SAVE :: NVTURBTH = 0  ! vertical turbulence
 INTEGER, SAVE :: NDISSHTH = 0  ! dissipative heating
@@ -368,6 +370,7 @@ INTEGER, SAVE :: NDIFRV   = 0 ! numerical diffusion
 INTEGER, SAVE :: NRELRV   = 0 ! relaxation
 INTEGER, SAVE :: NDCONVRV = 0 ! KAFR CONVection
 INTEGER, SAVE :: NMAFLRV  = 0 ! Mass flux
+INTEGER, SAVE :: NSNSUBRV = 0 ! Blowing snow sublimation
 INTEGER, SAVE :: NHTURBRV = 0 ! horizontal turbulence
 INTEGER, SAVE :: NVTURBRV = 0 ! vertical turbulence
 INTEGER, SAVE :: NNEGARV  = 0 ! negative correction
@@ -631,6 +634,8 @@ INTEGER, SAVE :: NHTURBSV  = 0 ! horizontal turbulence
 INTEGER, SAVE :: NVTURBSV  = 0 ! vertical turbulence
 INTEGER, SAVE :: NCHEMSV   = 0 ! chemistry activity
 INTEGER, SAVE :: NVISCSV   = 0 ! viscosity
+INTEGER, SAVE :: NSNSUBSV  = 0 ! Blowing snow sublimation
+INTEGER, SAVE :: NSNSEDSV  = 0 ! Blowing snow sedimentation
 !
 INTEGER, SAVE :: NNEGASV  = 0 ! negative correction
 INTEGER, SAVE :: NNETURSV = 0 ! negative correction
diff --git a/src/MNH/modn_budget.f90 b/src/MNH/modn_budget.f90
index d433f3809d4d3fed32ff5ce6cc34ba7054eebdd3..5a9b0fe6162fa91b87e73afd6af7c33aca24299b 100644
--- a/src/MNH/modn_budget.f90
+++ b/src/MNH/modn_budget.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1995-2020 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1995-2021 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -228,6 +228,7 @@
 !  B. Vie      03/02/2020: LIMA negativity checks after turbulence, advection and microphysics budgets
 !  P. Wautelet 09/03/2020: add missing budgets for electricity
 !  P. Wautelet 30/06/2020: add NNETURSV, NNEADVSV and NNECONSV variables
+!  P. Wautelet 02/03/2021: budgets: add terms for blowing snow
 !-------------------------------------------------------------------------------
 !
 !*       0.   DECLARATIONS
@@ -254,7 +255,7 @@ NAMELIST/NAM_BU_RTH/LBU_RTH, NASSETH, NNESTTH, NADVTH, NFRCTH, &
                    NVTURBTH, NDISSHTH, NNEGATH, NREVATH, NCONDTH, NHENUTH, NHONTH, &
                    NSFRTH, NDEPSTH, NDEPGTH,NRIMTH, NACCTH, NCFRZTH, NWETGTH, &
                    NDRYGTH, NGMLTTH, NIMLTTH, NBERFITH, NCDEPITH, NWETHTH, NHMLTTH, &
-                   NMAFLTH, NNETURTH, NNEADVTH,NNECONTH, NDRYHTH, NADJUTH, NCORRTH, &
+                   NMAFLTH, NSNSUBTH, NNETURTH, NNEADVTH,NNECONTH, NDRYHTH, NADJUTH, NCORRTH, &
                    NHINDTH, NHINCTH, NHONHTH, NHONCTH, NHONRTH, NCEDSTH, NSEDITH, NVISCTH
 !
 NAMELIST/NAM_BU_RTKE/LBU_RTKE, NASSETKE, NADVTKE,    &
@@ -263,7 +264,7 @@ NAMELIST/NAM_BU_RTKE/LBU_RTKE, NASSETKE, NADVTKE,    &
 !
 NAMELIST/NAM_BU_RRV/LBU_RRV, NASSERV, NNESTRV, NADVRV, NFRCRV, &
                     NNUDRV, NDIFRV, NRELRV, NDCONVRV, NHTURBRV, NVTURBRV, NNEGARV, &
-                    NREVARV, NCONDRV, NHENURV, NDEPSRV, NDEPGRV, NCDEPIRV, NMAFLRV, &
+                    NREVARV, NCONDRV, NHENURV, NDEPSRV, NDEPGRV, NCDEPIRV, NMAFLRV, NSNSUBRV, &
                     NNETURRV, NNEADVRV,NNECONRV, NADJURV, NCORRRV, NHINDRV, NHONHRV, NCEDSRV, NVISCRV
 ! 
 NAMELIST/NAM_BU_RRC/LBU_RRC, NASSERC, NNESTRC, NADVRC, NFRCRC, &
@@ -305,22 +306,22 @@ NAMELIST/NAM_BU_RRH/LBU_RRH, NASSERH, NNESTRH, NADVRH, NFRCRH, &
                     NCORRRH, NHGCVRH, NGHCVRH, NCOHGRH, NHMLTRH, &
                     NNETURRH, NNEADVRH, NNECONRH, NVISCRH
 ! 
-NAMELIST/NAM_BU_RSV/ LBU_RSV,  NASSESV,  NNESTSV,  NADVSV,   NFRCSV, &
-                     NDIFSV,   NRELSV,   NDCONVSV, NVTURBSV, NHTURBSV, NCHEMSV,  NMAFLSV,          &
-                     NVISCSV,  NNEGASV,  NNETURSV, NNEADVSV, NNECONSV, NNEGA2SV,                   &
-                     NDRIFTQV, NCORAYQV, NDEPSQV, NDEPGQV,   NREVAQV,  NCDEPIQV, NNEUTQV,          &
-                     NHONQC,   NAUTOQC,  NACCRQC, NRIMQC,    NWETGQC,  NDRYGQC,  NINCGQC, NWETHQC, &
-                     NIMLTQC,  NBERFIQC, NSEDIQC, NCDEPIQC,  NNEUTQC,                              &
-                     NSFRQR,   NAUTOQR,  NACCRQR, NREVAQR,   NACCQR,   NCFRZQR,  NWETGQR, NDRYGQR, &
-                     NGMLTQR,  NWETHQR,  NHMLTQR, NSEDIQR,   NNEUTQR,                              &
-                     NHONQI,   NAGGSQI,  NAUTSQI, NCFRZQI,   NWETGQI,  NDRYGQI,  NWETHQI,          &
-                     NIMLTQI,  NBERFIQI, NNIISQI, NSEDIQI,   NCDEPIQI, NNEUTQI,                    &
-                     NDEPSQS,  NAGGSQS,  NAUTSQS, NRIMQS,    NACCQS,   NCMELQS,  NWETGQS,          &
-                     NDRYGQS,  NNIISQS,  NWETHQS, NSEDIQS,   NNEUTQS,                              &
-                     NSFRQG,   NDEPGQG,  NRIMQG,  NACCQG,    NCMELQG,  NCFRZQG,  NWETGQG, NDRYGQG, &
-                     NINCGQG,  NGMLTQG,  NWETHQG, NSEDIQG,   NNEUTQG,                              &
-                     NWETGQH,  NWETHQH,  NHMLTQH, NSEDIQH,   NNEUTQH,                              &
-                     NDRIFTNI, NCORAYNI, NDEPSNI, NDEPGNI,   NREVANI,  NCDEPINI, NNEUTNI,          &
+NAMELIST/NAM_BU_RSV/ LBU_RSV,  NASSESV,  NNESTSV,  NADVSV,   NFRCSV,                                 &
+                     NDIFSV,   NRELSV,   NDCONVSV, NVTURBSV, NHTURBSV, NCHEMSV,  NMAFLSV,            &
+                     NVISCSV,  NSNSUBSV, NSNSEDSV, NNEGASV,  NNETURSV, NNEADVSV, NNECONSV, NNEGA2SV, &
+                     NDRIFTQV, NCORAYQV, NDEPSQV,  NDEPGQV,  NREVAQV,  NCDEPIQV, NNEUTQV,            &
+                     NHONQC,   NAUTOQC,  NACCRQC,  NRIMQC,   NWETGQC,  NDRYGQC,  NINCGQC,  NWETHQC,  &
+                     NIMLTQC,  NBERFIQC, NSEDIQC,  NCDEPIQC, NNEUTQC,                                &
+                     NSFRQR,   NAUTOQR,  NACCRQR,  NREVAQR,  NACCQR,   NCFRZQR,  NWETGQR,  NDRYGQR,  &
+                     NGMLTQR,  NWETHQR,  NHMLTQR,  NSEDIQR,  NNEUTQR,                                &
+                     NHONQI,   NAGGSQI,  NAUTSQI,  NCFRZQI,  NWETGQI,  NDRYGQI,  NWETHQI,            &
+                     NIMLTQI,  NBERFIQI, NNIISQI,  NSEDIQI,  NCDEPIQI, NNEUTQI,                      &
+                     NDEPSQS,  NAGGSQS,  NAUTSQS,  NRIMQS,   NACCQS,   NCMELQS,  NWETGQS,            &
+                     NDRYGQS,  NNIISQS,  NWETHQS,  NSEDIQS,  NNEUTQS,                                &
+                     NSFRQG,   NDEPGQG,  NRIMQG,   NACCQG,   NCMELQG,  NCFRZQG,  NWETGQG,  NDRYGQG,  &
+                     NINCGQG,  NGMLTQG,  NWETHQG,  NSEDIQG,  NNEUTQG,                                &
+                     NWETGQH,  NWETHQH,  NHMLTQH,  NSEDIQH,  NNEUTQH,                                &
+                     NDRIFTNI, NCORAYNI, NDEPSNI,  NDEPGNI,  NREVANI,  NCDEPINI, NNEUTNI,            &
                      NDEPOTRSV
 !
 END MODULE MODN_BUDGET
diff --git a/src/MNH/subl_blowsnow.f90 b/src/MNH/subl_blowsnow.f90
index 5e7e79326f71fa191ab6a0a2cf7ade5890432898..ad0cf278fa86b1eeedaf7c0a2da1344d8d86024a 100644
--- a/src/MNH/subl_blowsnow.f90
+++ b/src/MNH/subl_blowsnow.f90
@@ -51,11 +51,16 @@ END MODULE MODI_SUBL_BLOWSNOW
                          PTHS, PRVS, PSVS,PSNWSUBL3D,PVGK)
 
 USE MODD_BLOWSNOW
+use modd_budget,          only: lbudget_th, lbudget_rv, lbudget_sv,  &
+                                NBUDGET_TH, NBUDGET_RV, NBUDGET_SV1, &
+                                tbudgets
 USE MODD_CST
 USE MODD_CSTS_BLOWSNOW
+use modd_nsv,             only: nsv_snwbeg, nsv_snwend
 USE MODD_PARAMETERS
 
 USE MODE_BLOWSNOW_PSD
+use mode_budget,          only: Budget_store_init, Budget_store_end
 use mode_tools,           only: Countjv
 
 USE MODI_GAMMA
@@ -223,6 +228,14 @@ GSUBL(IIB:IIE,IJB:IJE,IKB:IKE) =                               &
 
 IMICRO = COUNTJV( GSUBL(:,:,:),I1(:),I2(:),I3(:))
 IF( IMICRO >= 0 ) THEN
+  if ( lbudget_th ) call Budget_store_init( tbudgets(NBUDGET_TH), 'SNSUB', pths(:, :, :) * prhodj(:, :, :) )
+  if ( lbudget_rv ) call Budget_store_init( tbudgets(NBUDGET_RV), 'SNSUB', prvs(:, :, :) * prhodj(:, :, :) )
+  if ( lbudget_sv ) then
+    do jsv = nsv_snwbeg, nsv_snwend
+      call Budget_store_init( tbudgets(NBUDGET_SV1 - 1 + jsv), 'SNSUB', psvs(:, :, :, jsv - nsv_snwbeg + 1) * prhodj(:, :, :) )
+    end do
+  end if
+
   ALLOCATE(ZRVT(IMICRO))
   ALLOCATE(ZRCT(IMICRO))
   ALLOCATE(ZRRT(IMICRO))
@@ -295,6 +308,14 @@ IF( IMICRO >= 0 ) THEN
 !  PSVS(:,:,:,3) = UNPACK( ZSVS(:,3),MASK=GSUBL(:,:,:),FIELD=PSVS(:,:,:,3) )
   PSNWSUBL3D(:,:,:) = UNPACK( ZSNWSUBL(:),MASK=GSUBL(:,:,:),FIELD=PSNWSUBL3D(:,:,:) )
 
+  if ( lbudget_th ) call Budget_store_end( tbudgets(NBUDGET_TH), 'SNSUB', pths(:, :, :) * prhodj(:, :, :) )
+  if ( lbudget_rv ) call Budget_store_end( tbudgets(NBUDGET_RV), 'SNSUB', prvs(:, :, :) * prhodj(:, :, :) )
+  if ( lbudget_sv ) then
+    do jsv = nsv_snwbeg, nsv_snwend
+      call Budget_store_end( tbudgets(NBUDGET_SV1 - 1 + jsv), 'SNSUB', psvs(:, :, :, jsv - nsv_snwbeg + 1) * prhodj(:, :, :) )
+    end do
+  end if
+
   DEALLOCATE(ZRVT)
   DEALLOCATE(ZRCT)
   DEALLOCATE(ZRRT)