anchor.diff:      ! Compute the s-parameter as the mean of the **start** and
       ! **end** parameters.
       allocate(s_params(2 * num_candidates))
  -    s_params(:num_candidates) = candidates(:num_candidates)%start
  -    s_params(num_candidates + 1:) = candidates(:num_candidates)%end_
  +    if (is_even) then
  +       ! NOTE: We "exclude" this block from ``lcov`` because it can never
  +       !       be invoked while ``MAX_LOCATE_SUBDIVISIONS`` is even.
  +       s_params(:num_candidates) = ( &
  +            candidates_odd(:num_candidates)%start)  ! LCOV_EXCL_LINE
  +       s_params(num_candidates + 1:) = ( &
  +            candidates_odd(:num_candidates)%end_)  ! LCOV_EXCL_LINE
  +    else
  +       s_params(:num_candidates) = candidates_even(:num_candidates)%start
  +       s_params(num_candidates + 1:) = candidates_even(:num_candidates)%end_
  +    end if
       s_approx = sum(s_params) / (2 * num_candidates)
   
       std_dev = sqrt(sum((s_params - s_approx)**2) / (2 * num_candidates))
  
positive.code: 
    end subroutine newton_refine
  
    subroutine split_candidate(num_nodes, dimension_, candidate, both_halves)
  
      integer(c_int), intent(in) :: num_nodes, dimension_
      type(LocateCandidate), intent(in) :: candidate
      type(LocateCandidate), intent(out) :: both_halves(2)
  
      ! Left half.
      both_halves(1)%start = candidate%start
      both_halves(1)%end_ = 0.5_dp * (candidate%start + candidate%end_)
      ! Right half.
      both_halves(2)%start = both_halves(1)%end_
      both_halves(2)%end_ = candidate%end_
  
      ! Allocate the new nodes and call sub-divide.
      allocate(both_halves(1)%nodes(num_nodes, dimension_))
      allocate(both_halves(2)%nodes(num_nodes, dimension_))
      call subdivide_nodes( &
           num_nodes, dimension_, candidate%nodes, &
           both_halves(1)%nodes, both_halves(2)%nodes)
  
    end subroutine split_candidate
  
    subroutine locate_point( &
         num_nodes, dimension_, nodes, point, s_approx) &
  
negative.code:        LocateCandidate, MAX_LOCATE_SUBDIVISIONS, LOCATE_STD_CAP, &
         SQRT_PREC, REDUCE_THRESHOLD, scalar_func, dqagse, &
         specialize_curve_generic, specialize_curve_quadratic, &
         subdivide_nodes_generic, split_candidate, allocate_candidates, &
         update_candidates, projection_error, can_reduce
    public &
         CurveData, LOCATE_MISS, LOCATE_INVALID, evaluate_curve_barycentric, &
         evaluate_multi, specialize_curve, evaluate_hodograph, subdivide_nodes, &
  