anchor.diff:       stop
     end if
     if (nc > nbins) estimate = estimate - (nc - nbins)*alpha*log(alpha)
  -  estimate = estimate / (ndata + nc*alpha) + log(ndata + nc*alpha)
  +  estimate = estimate / (n_data + nc*alpha) + log(n_data + nc*alpha)
   
   end subroutine pseudo
   
  
positive.code:     allocate(multi0(nmax+1),stat=err)
      multi0 = 0
      multi0(1) = alphabet_size - nbins
      do i = 1,nbins
         ni = counts(i)
         multi0(ni+1) = multi0(ni+1) + 1
      end do
  
       ! working arrays on bins visited at leat once 
      nmulti = count(multi0 > 0) 
      allocate(multi_x(nmulti),stat=err)
      allocate(multi(nmulti),stat=err)
  
      k = 0
      do i = 1,nmax+1
         if (multi0(i) > 0) then 
            k = k + 1
            multi_x(k) = i
            multi(k) = multi0(i)
         end if
      end do
      deallocate(multi0)
  
negative.code:   real(real64),   intent(in)  :: alpha
    real(real64),   intent(out) :: estimate
  
    integer(int32) :: nbins,n_data
    integer(int32) :: i
    real(real64)   :: ni
  
  