diff --git a/intercal/modis.py b/intercal/modis.py
index 3f754560d40f873f3db71bdebe789f9024b44d9a..324432822ca0118b1f4351f1257376536a04603c 100644
--- a/intercal/modis.py
+++ b/intercal/modis.py
@@ -5,16 +5,17 @@ import pyhdf.SD
 import pyhdf.VS
 from intercal.util import great_circle_dist
 
-def sno_stats(mod03_file, mod021km_file, sno_lat, sno_lon, sno_radius, output_file):
+def modis_to_iasi(files, sno_lat, sno_lon, sno_radius, output_file):
 
-    reader = ModisReader(mod03_file, mod021km_file)
-    mask = (great_circle_dist(reader.latitude, reader.longitude, sno_lat, sno_lon) <= sno_radius)
-    radiance = reader.radiance[:,mask]
+    output_shape = [16]
+    num_invalid_fov = np.zeros(output_shape, np.int32)
+    num_fov = np.zeros(output_shape, np.int32)
+    sum_radiance = np.zeros(output_shape, np.float64)
+    sum_radiance_squared = np.zeros(output_shape, np.float64)
 
-    num_invalid_fov = np.ma.count_masked(radiance, axis=-1)
-    num_fov = radiance.shape[-1] - num_invalid_fov
-    sum_radiance = radiance.sum(axis=-1)
-    sum_radiance_squared = (radiance**2).sum(axis=-1)
+    for mod03_file, mod021km_file in files:
+        sno_stats(mod03_file, mod021km_file, sno_lat, sno_lon, sno_radius,
+                  num_invalid_fov, num_fov, sum_radiance, sum_radiance_squared)
 
     sd = pyhdf.SD.SD(output_file, pyhdf.SD.SDC.WRITE | pyhdf.SD.SDC.CREATE | pyhdf.SD.SDC.TRUNC)
     write_hdf_sds(sd, 'Num_Invalid_FOV', num_invalid_fov, dims=['Channel'])
@@ -22,6 +23,18 @@ def sno_stats(mod03_file, mod021km_file, sno_lat, sno_lon, sno_radius, output_fi
     write_hdf_sds(sd, 'Sum_Radiance', sum_radiance, dims=['Channel'])
     write_hdf_sds(sd, 'Sum_Radiance_Squared', sum_radiance_squared, dims=['Channel'])
 
+def sno_stats(mod03_file, mod021km_file, sno_lat, sno_lon, sno_radius,
+              num_invalid_fov, num_fov, sum_radiance, sum_radiance_squared):
+
+    reader = ModisReader(mod03_file, mod021km_file)
+    mask = (great_circle_dist(reader.latitude, reader.longitude, sno_lat, sno_lon) <= sno_radius)
+    radiance = reader.radiance[:,mask]
+
+    num_invalid_fov += np.ma.count_masked(radiance, axis=-1)
+    num_fov += radiance.shape[-1] - num_invalid_fov
+    sum_radiance += radiance.sum(axis=-1)
+    sum_radiance_squared += (radiance**2).sum(axis=-1)
+
 def write_hdf_sds(sd, name, data, dims):
 
     hdf_type, np_type = {'i': (pyhdf.SD.SDC.INT32, np.int32), 
diff --git a/intercal/test/e2e/test.py b/intercal/test/e2e/test.py
index d3aa93b35292ef8a79624fbc041ca72b4976e567..e3f33f0520505d6d6bdaed79d5a5819d885a9e96 100644
--- a/intercal/test/e2e/test.py
+++ b/intercal/test/e2e/test.py
@@ -2,15 +2,16 @@
 import os
 from unittest import TestCase
 import pyhdf.SD
-from intercal.modis import sno_stats
+from intercal.modis import modis_to_iasi
 
-class SnoStatsTest(TestCase):
+class ModisToIasiTest(TestCase):
 
     @classmethod
     def setUpClass(cls):
 
         output_file = os.path.join('local/test', output_file_name)
-        sno_stats(mod03_file, mod021km_file, sno_lat, sno_lon, distance_threshold, output_file)
+        modis_to_iasi([(mod03_file, mod021km_file)], sno_lat, sno_lon, distance_threshold,
+                      output_file)
         cls.output_sd = pyhdf.SD.SD(output_file)
 
     def test_counts_number_of_pixels_within_threshold_distance_of_sno(self):