diff --git a/modules/util/util.py b/modules/util/util.py
index 24e7c7fca5e094e1d7369298f23deaa87a1b0354..d09b17d4b08307987f8705d227137e64bd9155c8 100644
--- a/modules/util/util.py
+++ b/modules/util/util.py
@@ -659,8 +659,11 @@ def make_for_full_domain_predict(h5f, name_list=None, satellite='GOES16', domain
     return grd_dct, ll, cc
 
 
-rho_water = 1.
-rho_ice = 0.917
+# rho_water = 1.
+# rho_ice = 0.917
+
+rho_water = 1000000.0  # g m^-3
+rho_ice = 917000.0  # g m^-3
 
 # real(kind=real4), parameter:: Rho_Water = 1.0    !g / m ^ 3
 # real(kind=real4), parameter:: Rho_Ice = 0.917    !g / m ^ 3
@@ -694,6 +697,9 @@ def compute_lwc_iwc(iphase, reff, opd, geo_dz):
     ice = iphase == 1
     no_ice = iphase != 1
 
+    # compute ice/liquid water path, g m-2
+    reff *= 1.0e-06  # convert microns to meters
+
     iwp_dcomp[ice] = 0.667 * opd[ice] * rho_ice * reff[ice]
     lwp_dcomp[no_ice] = 0.55 * opd[no_ice] * rho_water * reff[no_ice]
 
@@ -743,9 +749,10 @@ def make_for_full_domain_predict_viirs_clavrx(h5f, name_list=None, res_fac=1, da
 
     if use_nl_comp:
         cld_phase = get_grid_values(h5f, 'cloud_phase', j_0, i_0, None, num_j=ylen, num_i=xlen)
+        cld_dz = get_grid_values(h5f, 'cld_geo_thick', j_0, i_0, None, num_j=ylen, num_i=xlen)
         reff = grd_dct['cld_reff_dcomp']
         opd = grd_dct['cld_opd_dcomp']
-        lwc_nlcomp, iwc_nlcomp = compute_lwc_iwc(cld_phase, reff, opd)
+        lwc_nlcomp, iwc_nlcomp = compute_lwc_iwc(cld_phase, reff, opd, cld_dz)
         grd_dct['iwc_dcomp'] = iwc_nlcomp
         grd_dct['lwc_dcomp'] = lwc_nlcomp