diff --git a/edosl0util/timecode.py b/edosl0util/timecode.py
index d6160fd1ad4e23c836a6a3dad1aba7bff6edf868..26b4aef83428962b66ae2ad002be4413ddd7b83b 100644
--- a/edosl0util/timecode.py
+++ b/edosl0util/timecode.py
@@ -8,8 +8,6 @@ __copyright__ = "Copyright (C) 2015 University of Wisconsin SSEC. All rights res
 UNIX_EPOCH = datetime(1970, 1, 1)
 CDS_EPOCH = datetime(1958, 1, 1)
 
-_grain = Grain()
-
 
 def unixtime(dt):
     """
@@ -29,7 +27,7 @@ def timecode_parts_to_iet(days, ms, us, epoch):
     """
     Convert components to a IET based on arbitrary epoch.
     """
-    return int(_grain.utc2tai(
+    return int(_get_grain().utc2tai(
         epoch + timedelta(days=float(days),
                           milliseconds=float(ms),
                           microseconds=float(us)),
@@ -58,5 +56,19 @@ def dt_to_cds(dt):
     return (d.days, int(d.seconds * 1e3), d.microseconds)
 
 
-dt_to_iet = _grain.utc2iet
-iet_to_dt = _grain.iet2utc
+_grain = None
+
+
+def _get_grain():
+    global _grain
+    if _grain is None:
+        _grain = Grain()
+    return _grain
+
+
+def dt_to_iet(*args, **kwargs):
+    return _get_grain().utc2iet(*args, **kwargs)
+
+
+def iet_to_dt(*args, **kwargs):
+    return _get_grain().iet2utc(*args, **kwargs)