anchor.diff:          ! Returns:
           !    Hash of f using the MurmurHash2 algorithm.
   
  +        use, intrinsic:: iso_c_binding
  +
           integer(i0) :: hash
  -        integer(i0), intent(in) :: f(N)
  +        integer(i0), intent(in), target :: f(N)
           integer, intent(in) :: N
  +        type(c_ptr) :: key
           integer, parameter :: seed = 7 ! doesn't really matter...
           integer :: tmp
   
           ! MurmurHash2 destroys the size paramter, so create a copy.
  -        tmp = N
  +        ! The size parameter used in Murmurhash is the number of bytes...
  +        tmp = 4*N
   
  -        hash = MurmurHash2(f, tmp, seed)
  +        key = c_loc(f(1))
  +
  +        hash = MurmurHash2(key, tmp, seed)
   
       end function murmurhash_bit_string
   
  
positive.code:     ! Note that MurmurHash2 algorithms destroy N so it's recommended to use the
      ! wrapper function below.
      function MurmurHash2(key, N, seed) result(hash)
          use const
          integer(i0) :: hash
          integer(i0), intent(in) :: key(:)
          integer, intent(inout) :: N
          integer, intent(in) :: seed
      end function MurmurHash2
      function fnv1_hash(key, N) result(hash)
          use const
          integer(i0) :: hash
  
negative.code: module hashing
  
  ! Provide interfaces and wrappers to hashing procedures that are written in C++.
  
  ! Warning: only working with i0 as a 32-bit or 64-bit integer.
  
  use const
  
  