anchor.diff:      ! then add back in the calculated S(a,b) elastic+inelastic cross section.
   
       if (index_sab > 0) then
  -       micro_xs(i) % use_sab = .true.
  +       micro_xs(index_nuclide) % use_sab = .true.
   
          ! Get pointer to S(a,b) table
          sab => sab_tables(index_sab)
  
positive.code:        end if
  
         ! Correct total and elastic cross sections
         micro_xs(i) % total = micro_xs(i) % total - micro_xs(i) % elastic &
              + inelastic + elastic
         micro_xs(i) % elastic = inelastic + elastic
  
         ! Store S(a,b) elastic cross section for sampling later
         micro_xs(i) % elastic_sab = elastic
      end if
  
      ! Set last evaluated energy
      micro_xs(i) % last_E = p % E
  
    end subroutine calculate_nuclide_xs
  
  
negative.code:     integer, intent(in)     :: index_nuclide ! index into nuclides array
      integer, intent(in)     :: index_sab     ! index into sab_tables array
  
      integer :: IE        ! index on nuclide energy grid
      integer :: IE_sab    ! index on S(a,b) energy grid
      real(8) :: f         ! interp factor on nuclide energy grid
  