anchor.diff:      class(FluidSlv), intent(inout) :: FldSlv
       integer, allocatable, save     :: ndim ! Number of dimensions.
   
  -    if (.not. allocated(ndim)) then
  -      allocate(ndim, source = size(FldSlv % u))
  -    end if
  -
  -    if (ndim == 2) then
  +    ! Allocate ndim and set its value to the number of dimensions.
  +    if (.not. allocated(ndim)) allocate(ndim, source = size(FldSlv % u))
  +
  +    ! Choose 3D or 2D.
  +    C2D3D: if (ndim == 2) then
         call FldSlv % BuildRhs2D
  -    else
  +    else C2D3D
         call FldSlv % BuildRhs3D
  -    end if
  +    end if C2D3D
     end subroutine BuildRhs
   
     subroutine BuildRhs2D(FldSlv)
       implicit none
       class(FluidSlv), intent(inout) :: FldSlv
  -    real(dp)                       :: scale
  -    integer                        :: i, j, idx
  +    real(dp)                       :: scale     ! Scaling factor.
  +    integer                        :: i, j, idx ! Counters and index.
   
       ! Calculate the scale.
       scale =  1./FldSlv % celsiz
  
positive.code:     end do lz
    end subroutine BuildRhs3D
  
    subroutine InitFluid(FldSlv, names, whd, scale)
      implicit none
      character(len=*),  dimension(:), intent(in) :: names
      integer           , intent(inout) :: whd(:) ! Width (i), height (j), depth (k)
      real(dp), optional, intent(in) :: scale
      class(FluidSlv),   intent(out) :: FldSlv ! Fluid
      real(dp), dimension(size(whd)) :: ost    ! Offset
  
negative.code:     lz: do k = 1, FldSlv % whd(3)
        ly: do j = 1, FldSlv % whd(2)
          lx: do i = 1, FldSlv % whd(1)
            FldSlv % prhs(idx) = -scale * (                                         &
                                            FldSlv % u(1) % ReadVal(i+1, j  , k  )  &
                                          + FldSlv % u(2) % ReadVal(i  , j+1, k  )  &
                                          + FldSlv % u(3) % ReadVal(i  , j  , k+1)  &
  