anchor.diff:          end forall
       end subroutine
   
  -    ! Do we need to make a copy?
  -    function rotate(p1, axis, theta) result(p2)
  +    pure function rotate(p1, axis, theta) result(p2)
           integer, intent(in) :: p1(:, :), axis, theta
           integer             :: p2(size(p1, 1), size(p1, 2))
   
  
positive.code:     end function
  
      ! Non-parallel version.
      function all_rots(p) result(ps)
          integer, intent(in) :: p(:, :)
          integer             :: p1(size(p, 1), size(p, 2))
          integer             :: d(3, 3, 3)
  
negative.code:         end forall
      end function
  
      pure function sparse_to_dense(p1) result(p2)
          integer, intent(in) :: p1(:, :)
          integer             :: i
          integer             :: p2(3, 3, 3)
  