anchor.diff:          integer, intent(in) :: n
           integer, intent(out), dimension(m) :: orders
           real(sp), intent(in) :: h
  -        real(sp), intent(out), dimension(2 * m - 1, n) :: blocks
  +        real(sp), intent(out), dimension(m, 2 * m - 1) :: blocks
   
           real(sp) :: dx2
           real(sp), dimension(1) :: left3, left2, left1, right1, right2, right3
  
positive.code:         right2 = left2
          right3 = left3
  
          call make_banded_matrix(n, 1, left3, blocks(1:1, :))
          call make_banded_matrix(n, 1, left2, blocks(2:2, :))
          call make_banded_matrix(n, 1, left1, blocks(3:3, :))
          call make_banded_matrix(n, m, middle, blocks(4:10, :))
          call make_banded_matrix(n, 1, right1, blocks(11:11, :))
          call make_banded_matrix(n, 1, right2, blocks(12:12, :))
          call make_banded_matrix(n, 1, right3, blocks(13:13, :))
  
          orders = (/ 0, 0, 0, 3, 0, 0, 0 /)
      end subroutine make_laplacian_2d_o7
  
negative.code:         real(sp), intent(in), dimension(n, n) :: u_sqr
          real(sp), intent(out), dimension(n, n) :: r ! actually n(r)
  
          r = coeffs(12) * pumping  / (coeffs(13) + coeffs(14) * u_sqr)
      end subroutine revervoir_2d
  
      subroutine hamiltonian_2d(pumping, coeffs, u, v, blocks, orders, order, n)
  