anchor.diff:  implicit none
   
   ! DATA DICTIONARY
  -real                    ::  mesh_size, x_dim=1.0, y_dim=1.0
  +real                    ::  mesh_size, x_dim=1.0_wp, y_dim=1.0_wp
   integer                 ::  n, m
   real,allocatable        ::  a_p(:,:), a_n(:,:), a_s(:,:), a_e(:,:), a_w(:,:), phi(:,:), gamma(:,:)
   real,allocatable        ::  x(:),y(:)
   integer                 ::  i,j,k,h
  -real                    ::  delta,relaxation=0.8
  -real                    ::  rms,rms_old,e,error=1.0E-5
  +real                    ::  delta,relaxation=0.8_wp
  +real                    ::  rss,rss_old,e,error=1.0E-5_wp
   
   character(40),parameter ::  output_dir = 'output'
   integer                 ::  convergence_file,phi_file,axes_file
  
positive.code: allocate(y(0:m+1))
  
  ! INITIALIZE THE ARRAY VALUES
  gamma = 1.0
  phi = 0.0
  x = 0.0
  y = 0.0
  a_n = gamma
  a_s = gamma
  a_w = gamma
  
negative.code: 
  ! -- Boundaries and other initializations
  do i=1,n
    phi(i,m+1) = (real(i)-.5_wp)*mesh_size
    x(i) = (real(i)-.5_wp)*mesh_size
    a_n(i,m) = 2.0_wp*a_n(i,m)
    a_s(i,1) = 2.0_wp*a_s(i,1)
  end do
  
  do j=1,m
    phi(n+1,j) = (real(j)-.5_wp)*mesh_size
    y(j) = (real(j)-.5_wp)*mesh_size
    a_e(n,j) = 2.0_wp*a_e(n,j)
    a_w(1,j) = 2.0_wp*a_w(1,j)
  end do
  
  phi(n+1,m+1) = 1.0_wp
  x(n+1) = 1.0_wp
  y(m+1) = 1.0_wp
  
  write(axes_file,"(A,' ',A)")'x','y'
  do k=0,max(m+1,n+1)
  