anchor.diff:      allocate(this% sigma_sq(n1, n2))
       allocate(this% cut(n1, n2))
       allocate(this% cut_sq(n1, n2))
  +    allocate(this% shift)
   
       this% epsilon = epsilon
       this% sigma = sigma
       this% sigma_sq = sigma**2
       this% cut = cut
       this% cut_sq = cut**2
  -
  +    if (present(shift)) then
  +       this% shift = shift
  +    else
  +       this% shift = 0.d0
  +    end if
     end subroutine lj_params_init
   
   
  
positive.code: 
    end function lj_energy_9_6
  
  end module interaction
  
negative.code:      double precision, allocatable :: sigma_sq(:,:)
       double precision, allocatable :: cut(:,:)
       double precision, allocatable :: cut_sq(:,:)
       double precision, allocatable :: shift
     contains
       procedure :: init => lj_params_init
    end type lj_params_t
  
  contains
  
    subroutine lj_params_init(this, epsilon, sigma, cut, shift)
      class(lj_params_t), intent(out) :: this
      double precision, intent(in) :: epsilon(:,:)
      double precision, intent(in) :: sigma(:,:)
      double precision, intent(in) :: cut(:,:)
      double precision, intent(in), optional :: shift
  
      integer :: n1, n2
  
  