anchor.diff:      head => list
   
       E = energy(index)
  -    do while (index <= n_energy)
  +    do while (index <= n)
   
          ! If we've reached the end of the grid energy list, add the remaining
          ! energy points to the end
          if (.not. associated(current)) then
             ! finish remaining energies
  -          do while (index <= n_energy)
  +          do while (index <= n)
                allocate(previous % next)
                current => previous % next
                current % data = energy(index)
  
positive.code: ! of points already stored from previous arrays.
  !===============================================================================
  
    subroutine add_grid_points(list, energy, n_energy)
  
      type(ListReal), pointer :: list
      real(8), intent(in) :: energy(n_energy)
      integer, intent(in) :: n_energy
  
      type(ListReal), pointer :: current => null()
      type(ListReal), pointer :: previous => null()
      type(ListReal), pointer :: head => null()
      type(ListReal), pointer :: tmp => null()
      integer :: index
      real(8) :: E
  
      index = 1
  
      ! if the original list is empty, we need to allocate the first element and
      ! store first energy point
      if (list_size(list) == 0) then
         allocate(list)
         current => list
         do index = 1, n_energy
            current % data = energy(index)
            if (index == n_energy) then
               current % next => null()
               return
            end if
  
negative.code:     type(Material), pointer :: mat => null()
      type(Nuclide),  pointer :: nuc => null()
      integer :: i, j
      character(MAX_LINE_LEN) :: msg
  
      msg = "Creating unionized energy grid..."
  