diff --git a/mvcm/main_tests_only.py b/mvcm/main_tests_only.py
index e58a6233350ddc301cdab769e6b6cf9b870610c0..3f397b6b3fc429f5b8965fbd387ebae6a8b2ca75 100644
--- a/mvcm/main_tests_only.py
+++ b/mvcm/main_tests_only.py
@@ -431,6 +431,7 @@ def main(
     integer_cloud_mask[(csc <= 0.95) & (csc > 0.66)] = 1
     integer_cloud_mask[csc <= 0.66] = 0
     integer_cloud_mask = integer_cloud_mask.astype(np.int8)
+    spi = utils.cloud_mask_spi(viirs_data)
 
     # logger.debug(f"Memory: {tracemalloc.get_traced_memory()}")
     cloud_mask = np.zeros((6, csc.shape[0], csc.shape[1]), dtype=np.byte)
@@ -448,6 +449,7 @@ def main(
         "cloud_mask": {"dims": ("bits", "x", "y"), "data": cloud_mask},
         "quality_assurance": {"dims": ("x", "y", "qa"), "data": quality_assurance},
         "integer_cloud_mask": {"dims": ("x", "y"), "data": integer_cloud_mask},
+        "spi": {"dims": ("x1", "y1"), "data": spi.values},
     }
 
     old_debug_data = {
diff --git a/mvcm/spectral_tests.py b/mvcm/spectral_tests.py
index 2b5b2df879568b16f36a37e6f75497cc52ceb17b..8eda2fee36ac664c41f95cd95410bb9fe43f401a 100644
--- a/mvcm/spectral_tests.py
+++ b/mvcm/spectral_tests.py
@@ -776,16 +776,18 @@ class CloudTests:
             sunglint = scene_for_sunglint.find_sunglint(
                 self.thresholds["Sun_Glint"]["bounds"][3], day_flag
             ).values
+
             # sunglint = scn.find_scene(self.data, self.thresholds["Sun_Glint"]["bounds"][3])[
             #     "sunglint"
             # ]
 
-            idx = np.nonzero((solar_zenith <= 85) & (sunglint == 1))
+            # idx = np.nonzero((solar_zenith <= 85) & (sunglint == 1))
 
             thr_no_sunglint = np.array([threshold["thr"][i] for i in range(8)])
             thr_sunglint = np.array([self.thresholds["Sun_Glint"]["snglnt"][i] for i in range(8)])
             temp_conf[sunglint == 0] = conf.conf_test_dble(rad[sunglint == 0], thr_no_sunglint)
-            temp_conf[idx] = conf.conf_test_dble(rad[idx], thr_sunglint)
+
+            temp_conf[sunglint == 1] = conf.conf_test_dble(rad[sunglint == 1], thr_sunglint)
             kwargs["confidence"][self.scene_idx] = temp_conf[self.scene_idx]
 
             idx = np.nonzero(
diff --git a/mvcm/utility_functions.py b/mvcm/utility_functions.py
index 1b7b97f3ce7fd82164bbbfd0d917bf5c7913c1fa..eae3144b9faaeae37d8eee8cf458d45fa5753ea0 100644
--- a/mvcm/utility_functions.py
+++ b/mvcm/utility_functions.py
@@ -3,9 +3,19 @@
 from typing import Dict
 
 import numpy as np
+import xarray as xr
 from numpy.lib.stride_tricks import sliding_window_view
 
 
+def cloud_mask_spi(data: xr.Dataset):
+    temp_da = xr.DataArray(data.M05.values, dims=("number_of_lines", "number_of_pixels"))
+    spi = 100 * (
+        temp_da.coarsen(number_of_lines=2, number_of_pixels=2).std()
+        / temp_da.coarsen(number_of_lines=2, number_of_pixels=2).mean()
+    )
+    return spi
+
+
 def local_nxn_mean(arr: np.ndarray, x: int = 3, y: int = 3) -> np.ndarray:
     """Return the mean value of each NxM (default 3) pixel region for a given array."""
     local_mean = (
diff --git a/mvcm/write_output.py b/mvcm/write_output.py
index ffdb63199ddd3170caf77cddd0e5502a3dbd10fa..23eed6908a747c917f8eddfc2cda6f1c47420c10 100644
--- a/mvcm/write_output.py
+++ b/mvcm/write_output.py
@@ -181,6 +181,17 @@ def save_output(
                 "valid_max": 3,
             },
         },
+        "SPI": {
+            "dims": ("number_of_lines", "number_of_pixels"),
+            "data": data.spi.values,
+            "attrs": {
+                "units": "none",
+                "long_name": "VIIRS SPI",
+                "_FillValue": -999.9,
+                "valid_min": 0.0,
+                "valid_max": 100.0,
+            },
+        },
     }
 
     if debug is True: