diff --git a/gridded_glm/libexec/_minute_gridder.py b/gridded_glm/libexec/_minute_gridder.py
index 2238633eebe76ed8d09cb93d1243c11a516e9e52..c24cb71b0ce9d44afd89d8d1dfb7653198ef4e55 100644
--- a/gridded_glm/libexec/_minute_gridder.py
+++ b/gridded_glm/libexec/_minute_gridder.py
@@ -44,6 +44,7 @@ import shutil
 import atexit
 from glob import glob
 import socket
+import signal
 from netCDF4 import Dataset
 #from multiprocessing import freeze_support # https://docs.python.org/2/library/multiprocessing.html#multiprocessing.freeze_support
 from functools import partial
@@ -300,8 +301,13 @@ def add_gglm_attrs(netcdf_filename, input_filenames):
     except:
         log.error("could not add CSPP Geo GGLM attributes to {}".format(netcdf_filename))
 
+def alarm_handler(signum, frame):
+  raise OSError("Timeout exceeded!")
 
 if __name__ == '__main__':
+    signal.signal(signal.SIGALRM, alarm_handler)
+    signal.alarm(10*60) # timeout if we're not done after 10 minutes
+
 #    freeze_support() # nb. I don't think this is needed as we're not making windows execs at this time
     parser = create_parser()
     args = parser.parse_args()