anchor.diff:             !
              if (filter) then
                !
  -             if (upper%mask/=trim(quantum_numbers(upper%i,ilevelf)).or.lower%mask/=trim(quantum_numbers(lower%i,ileveli))) cycle
  +             do ifilter = 1,Nfilters
  +               !
  +               if (upper(ifilter)%mask/=trim(quantum_numbers(upper(ifilter)%i,ilevelf)).or.lower(ifilter)%mask/=trim(quantum_numbers(lower(ifilter)%i,ileveli))) cycle loop_tran
  +               !
  +             enddo
                !
              endif
              !
  
positive.code:   private
    public intensity,readinput,verbose
    !
    integer(ik),parameter   :: nfiles_max =1000, max_items = 1000, nspecies_max = 10, nquadmax = 100
    !
    integer(ik)   :: GNS=1,npoints=1001,nchar=1,nfiles=1,ipartf=0,verbose=3,ioffset = 10
    real(rk)      :: temp=298.0,partfunc=0,freql=-small_,freqr= 20000.0,thresh=1.0d-90,halfwidth=1e-2,meanmass=1.0,maxtemp=10000.0
  
negative.code:       !
        if (filter.and.i==1) then
          !
          do ifilter = 1,Nfilters
            !
            if (lower(ifilter)%i<1.or.lower(ifilter)%i>nitems-4.or.upper(ifilter)%i<1.or.upper(ifilter)%i>nitems-4) then
              !
              write(out,"('wrong filter indices, upper or lower: ',2i)") upper(ifilter)%i+4,lower(ifilter)%i+4
              print*,quantum_numbers(:,i)
              stop 'wrong filter indices, upper or lower'
              !
            endif
            !
          enddo
          !
        endif 
        !
  