anchor.diff:      he5stat = HE5_SWrdlattr ( swath_id, TRIM(ADJUSTL(gasdatafieldname)),&
                 "ScaleFactor", scale_gas       )
   
  +    ! -------------------------------------------------------------------
  +    ! Finding out the data field for water vapor (to compute air density)
  +    ! -------------------------------------------------------------------
  +    ndatafields = HE5_swinqdflds(swath_id, datafield_name, datafield_rank, datafield_type)
  +    CALL extract_swathname(nswath, TRIM(ADJUSTL(datafield_name)), &
  +         TRIM(ADJUSTL(sao_molecule_names(h2o_cli_idx))), gasdatafieldname)
  +
  +    ! ---------------------------------------------------------------------------
  +    ! Check if we found the correct swath name. If not, report an error and exit.
  +    ! ---------------------------------------------------------------------------
  +    IF ( INDEX (TRIM(ADJUSTL(gasdatafieldname)),TRIM(ADJUSTL(sao_molecule_names(pge_idx)))) == 0 ) THEN
  +       CALL error_check ( &
  +            0, 1, pge_errstat_error, OMSAO_E_HE5SWLOCATE, modulename, &
  +            vb_lev_default, locerrstat )
  +       WRITE(*,*) "Climatology file does not contain data for ", sao_molecule_names(h2o_cli_idx)
  +       errstat = MAX ( errstat, locerrstat )
  +       RETURN
  +    END IF
  +
  +    ! -----------------------------
  +    ! Read data from this datafield
  +    ! -----------------------------
  +    he5stat = HE5_SWrdfld (                                &
  +         swath_id, TRIM(ADJUSTL(gasdatafieldname)),        &
  +         he5_start_3d, he5_stride_3d, he5_edge_3d,         &
  +         H2O_profiles(1:Cmlon,1:Cmlat,1:CmETA) )
  +
  +    ! -----------------------------------------
  +    ! Read gas datafield scale factor attribute
  +    ! -----------------------------------------
  +    he5stat = HE5_SWrdlattr ( swath_id, TRIM(ADJUSTL(gasdatafieldname)),&
  +              "ScaleFactor", scale_H2O       )
  +
       ! ------------------------------------
       ! Apply scaling factors to data fields
       ! ------------------------------------
       Temperature  = Temperature  * scale_Temperature
       Psurface     = Psurface     * scale_Psurf
       Gas_profiles = Gas_profiles * scale_gas
  +    H2O_profiles = H2O_profiles * scale_H2O
   
     END SUBROUTINE omi_read_climatology
   
  
positive.code:     ! Local variables
      ! ---------------
      INTEGER (KIND=i4) :: itimes, ixtrack, spix, epix, idx_lat, idx_lon, ilevel, n, n1
      REAL    (KIND=r8)                      :: rho1, rho2, grad, aircolumn
      REAL    (KIND=r8), DIMENSION (0:CmETA) :: lhgt, lpre, ltmp
  
      ! -----------------------
      ! Some physical constants
      ! -----------------------
      REAL (KIND=r8), PARAMETER ::                &
           rho_stand = 2.6867773e+19_r8,          & ! Loschmidt, in [cm^-3]
           pzero     = 1013.25_r8,                & ! P0 in [mb]
           tzero     = 273.15_r8,                 &
           rho_zero  = rho_stand * tzero / pzero, &
           du_to_cm2 = 2.6867773e+16_r8
  
      ! -------------------------------
      ! Air density conversion constant
      ! -------------------------------
      REAL (KIND=r8), PARAMETER :: km2cm  = 1.0E+05_r8
      
      ! ------------------------------
      ! Name of this module/subroutine
      ! ------------------------------
  
negative.code:        ALLOCATE (Bp      (CmEp1),                 STAT=estat ) ; errstat = MAX ( errstat, estat )
         ALLOCATE (Temperature (Cmlon, Cmlat, CmETA), STAT=estat ) ; errstat = MAX ( errstat, estat )
         ALLOCATE (Gas_profiles(Cmlon, Cmlat, CmETA), STAT=estat ) ; errstat = MAX ( errstat, estat )
         ALLOCATE (H2O_profiles(Cmlon, Cmlat, CmETA), STAT=estat ) ; errstat = MAX ( errstat, estat )
         ALLOCATE (Psurface(Cmlon,Cmlat),            STAT=estat ) ; errstat = MAX ( errstat, estat )
      CASE ('d')
         IF ( ALLOCATED ( latvals      ) )  DEALLOCATE ( latvals      )
  