diff --git a/code/rubar20.f90 b/code/rubar20.f90
index c3c3035063de71f05b3938aa73969df42d6d47c5..6087598bdfc8b98021de2fbeba09ad859881a6ef 100644
--- a/code/rubar20.f90
+++ b/code/rubar20.f90
@@ -17400,16 +17400,17 @@
           ym(ibouv)=0.5*(y+h)
           f1=1+y*y*(eta(ibouv)/(h*h)+nu(ibouv)/&
      &(ym(ibouv)*ym(ibouv)))
-          sm(ibouv)=db(ibouv)*ym(ibouv)
-          pm(ibouv)=db(ibouv)+2.*ym(ibouv)
-          rhm(ibouv)=sm(ibouv)/pm(ibouv)
+            dbtotal=db(ibouv)+dbprec(ibouv)
+            sm(ibouv)=dbtotal*ym(ibouv)
+            pm(ibouv)=dbtotal+2.*ym(ibouv)
+            rhm(ibouv)=sm(ibouv)/pm(ibouv)
           if (zb(ibouv)+ym(ibouv).lt.zc(ibouv)) then
             alm(ibouv)=alc(ibouv)+((alp(ibouv)-alc(ibouv))&
      &/(zp(ibouv)-zc(ibouv)))*(zb(ibouv)+ym(ibouv)-zc(ibouv))
           else
             alm(ibouv)=alc(ibouv)
           endif
-          s=db(ibouv)*y
+          s=dbtotal*y
         else
 !  calcul en circulaire
           r=0.5*db(ibouv)
@@ -17483,8 +17484,9 @@
             endif
 !   calcul des caracteristiques moyennes
             ym(ibouv)=0.5*(y+h)
-            sm(ibouv)=db(ibouv)*ym(ibouv)
-            pm(ibouv)=db(ibouv)+2.*ym(ibouv)
+            dbtotal=db(ibouv)+dbprec(ibouv)
+            sm(ibouv)=dbtotal*ym(ibouv)
+            pm(ibouv)=dbtotal+2.*ym(ibouv)
             rhm(ibouv)=sm(ibouv)/pm(ibouv)
           if (zb(ibouv)+ym(ibouv).lt.zc(ibouv)) then
             alm(ibouv)=alc(ibouv)+((alp(ibouv)-alc(ibouv))&
@@ -17492,7 +17494,7 @@
           else
             alm(ibouv)=alc(ibouv)
           endif
-            s=db(ibouv)*y
+            s=dbtotal*y
           else
 !  calcul en circulaire
             r=0.5*db(ibouv)
@@ -17538,6 +17540,12 @@
         if (y .gt. h)y=h
         q=s*sqrt(2.*g*(h-y)/f1)
         qs1=q/(sm(ibouv)*rhm(ibouv)**(1./6.))
+! correction sur Q si dbprec non nul
+        if(s.gt.0.)then
+          if (it(ibouv).ne.0) then
+            q=q*y*db(ibouv)/s
+          endif
+        endif
 !        taui(ibouv)=qs1*qs1/c2*0.047*(rho(ibouv)-1000.)*g*d50(ibouv)
         q2=qs1*qs1-c2(ibouv)
         if (q2.le.0.) then
@@ -17694,8 +17702,8 @@
          m2 = int((tt-3600.*float(m1))/60.)
          m3 = int(tt-3600.*float(m1)-60.*float(m2))
 
-         write(imp(ibouv),101) m1,m2,m3,z(i,ibouv),zbr(i,ibouv),&
-     &                         dbr(i,ibouv),ql(i,ibouv),qs(i,ibouv)
+!          write(imp(ibouv),101) m1,m2,m3,z(i,ibouv),zbr(i,ibouv),&
+!      &                         dbr(i,ibouv),ql(i,ibouv),qs(i,ibouv)
 ! on cherche la largeur breche apres effondrement renard pour calcul volume
          if (tt .lt. trect(ibouv)) then
            lbef = dbr(i,ibouv)
@@ -17804,6 +17812,9 @@
         write(imp(ibouv),101)m1,m2,m3,z(i,ibouv),zbr(i,ibouv)&
 !        write(imp(ibouv),101)m1,m2,m3,z(i,ibouv)+zfm,zbr(i,ibouv)&
      &,dbr(i,ibouv),ql(i,ibouv),qs(i,ibouv)
+      else
+        write(imp(ibouv),101)m1,m2,m3,0.0,0.0&
+     &,0.0,0.0,0.0
       endif
   101   format(2x,i3,2x,i3,2x,i3,5x,5f10.4)
       return
@@ -19250,7 +19261,7 @@
 
     use module_precision
 
-     use module_tableaux,only:ne,na,nn,eau,het,quet,qvet,het,fra,fre,cofr&
+     use module_tableaux,only:ne,na,nn,eau,het,quet,qvet,fra,fre,cofr&
      &,ieva,iae,nne,g,smbh,zfn,dt,cfl,dt0,t,eps1,eps2,paray,idl
 
      use module_ts,only : efficace,sigma0,rapsmbhc,nbcoun,epcoun,diamn,sigman&