diff --git a/.gitignore b/.gitignore
index cb5757a9b7e5d1f37ad2b65791530be9fa3e8e66..de10f0051a72d7547495f6a760f458d2806a5232 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
 .eggs
+.cache
 build
 dist
 env
diff --git a/edosl0util/timecode.py b/edosl0util/timecode.py
index 414e142cf12870d02f390b1a63846e9d10e64899..a505e6c9ef4ae8bd3f912f5628b002f1b9420c40 100644
--- a/edosl0util/timecode.py
+++ b/edosl0util/timecode.py
@@ -16,15 +16,16 @@ def unixtime(dt):
     return (UNIX_EPOCH - dt).total_seconds()
 
 
-def cds_to_timestamp(days, millis, micros, epoch):
+def cds_to_timestamp(days, millis, microseconds, epoch):
     """
     CDS to unix timestamp seconds.
     """
-    return epoch + (86400 * days) + (millis / 1000.) + (micros / 1000000.)
+    return epoch + (86400 * days) + (millis / 1000.) + (microseconds / 1000000.)
 
 
-def cds_stamp(days, millis, micros, epoch=JPSS_EPOCH):
+def cds_stamp(days, millis, microseconds, epoch=JPSS_EPOCH):
     """
     CCSDS Day Segmented timecode to UTC datetime.
     """
-    return JPSS_EPOCH + timedelta(days=days, microseconds=1000 * millis + micros)
+    return epoch + timedelta(days=days,
+                             seconds=millis / 1000.0 + (microseconds / 1000000.))
diff --git a/setup.py b/setup.py
index ec7764c5fb5b1231e62312cb0e871faba0d01ab9..171152057a2ca6f63eb68ceee510cbc4e146c836 100644
--- a/setup.py
+++ b/setup.py
@@ -15,6 +15,12 @@ setup(
     install_requires=[
         'h5py',
     ],
+    extras_require={
+        'testing': [
+            'pytest',
+            'pytest-cov'
+        ]
+    },
     entry_points="""
     [console_scripts]
     edosl0split = edosl0util.cli.split:main
diff --git a/tests/test_timecode.py b/tests/test_timecode.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d2633c591bcdd3105ac1d8fec94784dfcd0d040
--- /dev/null
+++ b/tests/test_timecode.py
@@ -0,0 +1,29 @@
+from datetime import datetime, timedelta
+from edosl0util import timecode
+
+
+def test_unixtime():
+    assert timecode.unixtime(timecode.UNIX_EPOCH) == 0
+
+
+def test_cds_to_timestamp():
+    epoch = 0
+
+    secs = timecode.cds_to_timestamp(0, 0, 0, epoch)
+    assert secs == 0
+
+    secs = timecode.cds_to_timestamp(0, 0, 999, epoch)
+    assert secs == 0.000999
+
+    secs = timecode.cds_to_timestamp(1, 1, 999, epoch)
+    assert secs == 86400.001999
+
+
+def test_cds_stamp():
+    epoch = timecode.UNIX_EPOCH
+
+    assert timecode.cds_stamp(0, 0, 0, epoch) == timecode.UNIX_EPOCH
+
+    assert timecode.cds_stamp(0, 0, 999, epoch) == datetime(1970, 1, 1, 0, 0, 0, 999)
+
+    assert timecode.cds_stamp(1, 1, 999, epoch) == datetime(1970, 1, 2, 0, 0, 0, 1999)