anchor.diff:      END DO
       
     END SUBROUTINE accumulateSink
  +
  +  ! ------------------------------------------------
  +  SUBROUTINE accumulateSinkReverse(kbdim,klev,ck,itrgt,istr,iend,part,nbtrgt,nbpart,sink)
  +
  +    INTEGER, INTENT(in) :: kbdim,klev,istr,iend,itrgt
  +    INTEGER, INTENT(in) :: nbtrgt,nbpart
  +    REAL, INTENT(in) :: ck(kbdim,klev,nbpart,nbtrgt)
  +    TYPE(Section), INTENT(in) :: part(kbdim,klev,nbpart)
  +    REAL, INTENT(inout) :: sink(kbdim,klev)
  +
  +    INTEGER :: ll,ii,jj
  +    
  +    DO ll = istr,iend
  +       DO jj = 1,klev
  +          DO ii = 1,kbdim
  +             sink(ii,jj) = sink(ii,jj) + ck(ii,jj,ll,itrgt)*part(ii,jj,ll)%numc
  +          END DO
  +       END DO
  +    END DO
  +      
  +  END SUBROUTINE accumulateSinkReverse
   
     ! ------------------------------------------------
   
  
positive.code: MODULE mo_salsa_coagulation_processes
    USE mo_submctl, ONLY : in1a,fn1a,in2a,fn2a,in2b,fn2b,   &
                           ica,fca,icb,fcb,iia,fia,iib,fib, &
                           nbins,ncld,nprc,nice,nsnw,       &
  
negative.code:        zplusterm(:,:,:) = 0.
         
         ! corresponding index for regime b cloud droplets
         index_b = MAX(kk-fca%cur+ncld,icb%cur) ! If regime a has more bins than b:
                                                ! Set this at minimum to beginnign of b.
  
         ! Droplets lost to larger aerosol bins
         IF (lscgca) THEN
            ! Aerosol bins a, parallel aerosol bin plus 1
            index_aero = ica%par + kk
            CALL accumulateSinkReverse(kbdim,klev,zccca,kk,index_aero,fn2a,aero,ncld,nbins,zminusterm)
            ! Aerosol bins b, aerosol bin plus 1
            index_aero = icb%par + (index_b-fca%cur)
            CALL accumulateSinkReverse(kbdim,klev,zccca,kk,index_aero,fn2b,aero,ncld,nbins,zminusterm)
         END IF
  
         ! Droplets lost by those with larger nucleus in regime a
         IF (lscgcc) &
  