diff --git a/modules/util/abi_surfrad.py b/modules/util/abi_surfrad.py
index 1a4f1178b2831092fdfe5b1b7b9966d5a2f14d46..4fe2d133c1daaf3be16345eb014f40221f10ad93 100644
--- a/modules/util/abi_surfrad.py
+++ b/modules/util/abi_surfrad.py
@@ -17,8 +17,9 @@ snow_class_name = group_name_m + 'snow_class'
 
 # params_i = [group_name_i+'temp_ch38', group_name_i+'refl_ch01', group_name_i+target_param]
 params_i = [group_name_i+'temp_ch38', group_name_i+'refl_ch01', group_name_i+'temp_stddev3x3_ch31', group_name_i+'refl_stddev3x3_ch01', group_name_i+target_param]
+
+# params_m = [group_name_m+'temp_ch38', group_name_m+'refl_ch01', group_name_m+'refl_submin_ch01', group_name_m+'refl_submax_ch01', group_name_m+'refl_substddev_ch01', group_name_m+target_param]
 params_m = [group_name_m+'temp_ch38', group_name_m+'refl_ch01', group_name_m+'refl_submin_ch01', group_name_m+'refl_submax_ch01', group_name_m+'refl_substddev_ch01', group_name_m+'temp_stddev3x3_ch31', group_name_m+'refl_stddev3x3_ch01', group_name_m+target_param]
-            # group_name_m+'refl_submax_ch01', group_name_m+'refl_substddev_ch01', group_name_m+target_param]
 
 param_idx_m = params_m.index(group_name_m + target_param)
 param_idx_i = params_i.index(group_name_i + target_param)
@@ -39,6 +40,7 @@ def keep_tile(p_idx, tile):
 
     if target_param == 'cloud_probability':
         grd_k = process_cld_prob(grd_k)
+        # grd_k = process_cloud_frac(grd_k)
     elif 'cld_opd_dcomp' in target_param:
         grd_k = process_cld_opd(grd_k)
 
@@ -62,6 +64,34 @@ def process_cld_prob(grd_k):
     return grd_k
 
 
+def process_cloud_frac(grd_k):
+    pass
+
+
+def get_cloud_frac_5cat(grd_k):
+    grd_k = np.where(np.isnan(grd_k), 0, grd_k)
+    grd_k = np.where(grd_k < 0.5, 0, 1)
+
+    s = grd_k[:, 0::4, 0::4] + grd_k[:, 1::4, 0::4] + grd_k[:, 2::4, 0::4] + grd_k[:, 3::4, 0::4] + \
+        grd_k[:, 0::4, 1::4] + grd_k[:, 1::4, 1::4] + grd_k[:, 2::4, 1::4] + grd_k[:, 3::4, 1::4] + \
+        grd_k[:, 0::4, 2::4] + grd_k[:, 1::4, 2::4] + grd_k[:, 2::4, 2::4] + grd_k[:, 3::4, 2::4] + \
+        grd_k[:, 0::4, 3::4] + grd_k[:, 1::4, 3::4] + grd_k[:, 2::4, 3::4] + grd_k[:, 3::4, 3::4]
+
+    cat_0 = np.logical_and(s >= 0, s < 2)
+    cat_1 = np.logical_and(s >= 2, s < 6)
+    cat_2 = np.logical_and(s >= 6, s < 11)
+    cat_3 = np.logical_and(s >= 11, s < 15)
+    cat_4 = np.logical_and(s >= 15, s <= 16)
+
+    s[cat_0] = 0
+    s[cat_1] = 1
+    s[cat_2] = 2
+    s[cat_3] = 3
+    s[cat_4] = 4
+
+    return s
+
+
 def process_cld_opd(grd_k):
     keep = np.invert(np.isnan(grd_k))
     num_keep = np.sum(keep)