anchor.diff:        iy = 0
       endif
       do i = 1, N
  -      stemp = stemp + ( sx( ix ) * sy( iy ) )
  +      dtemp = dtemp + ( sx( ix ) * sy( iy ) )
         ix = ix + strideX
         iy = iy + strideY
       end do
     endif
  -  ddot = stemp
  +  ddot = dtemp
     return
   end function ddot
positive.code:     ! If we have a remainder, do a clean-up loop...
      if ( m /= 0 ) then
        do i = 1, m
          stemp = stemp + ( sx( i ) + sy( i ) )
        end do
      end if
      if ( N < M ) then
        ddot = stemp
        return
      end if
      mp1 = m + 1
      do i = mp1, N, 5
        stemp = stemp + &
          ( sx( i ) * sy( i ) ) + &
          ( sx( i+1 ) * sy( i+1 ) ) + &
          ( sx( i+2 ) * sy( i+2 ) ) + &
  
negative.code:   double precision, intent(in) :: sx(*), sy(*)
    ! ..
    ! Local scalars:
    double precision :: dtemp
    integer :: mp1, ix, iy, i, m
    ! ..
    ! Intrinsic functions:
    intrinsic mod
    ! ..
    dtemp = 0.0e0
    ddot = 0.0e0
    ! ..
    if ( N <= 0 ) then
  