diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 87aebece83817b8a02076730bfe6ade823851c0f..ee2f099126bca4779dfad4c77ffed39f2c46d8b9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -15,25 +15,18 @@ variables:
 
 .check_code:
   cache: {}
-  image: usgs/centos:latest
+  image: ${DEVOPS_REGISTRY}usgs/conda:latest
   script:
-    - yum install -y wget which
-    - wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
-    - bash miniconda.sh -b -p $HOME/miniconda
-    - export PATH="$HOME/miniconda/bin:$PATH"
-    - conda config --set always_yes yes --set changeps1 no
-    - conda update --yes conda
-    - conda info -a
+    # Add conda to path
+    - source /etc/profile.d/conda.sh
     # Install Project Dependencies
     - conda config --add channels conda-forge
     - conda install python=${PYTHON_VERSION} obspy pycurl
     - pip install pipenv
-    - export LC_ALL=C.UTF-8
-    - export LANG=C.UTF-8
     - pipenv --site-packages install --dev --pre --skip-lock
     # Run Code Checks
     - pipenv run black --check .
-    - pipenv run pytest --cov-report xml:cov.xml --cov=test/
+    - pipenv run pytest --cov-report xml:cov.xml --cov=geomagio
   artifacts:
     paths:
       - cov.xml
diff --git a/geomagio/residual/CalFileFactory.py b/geomagio/residual/CalFileFactory.py
index 64a316b96cef224a8a2e80ac639455b439bdf993..5b626ca2f5ec8f1d8412e4ce659b7f6e0ef391a0 100644
--- a/geomagio/residual/CalFileFactory.py
+++ b/geomagio/residual/CalFileFactory.py
@@ -43,7 +43,7 @@ class CalFileFactory(object):
                         absolute, baseline = absolute * 60, baseline * 60
                     out.write(  # this is one line...
                         f"{c.starttime.datetime:%H%M}-{c.endtime.datetime:%H%M}"
-                        f" c{baseline:9.1f}{absolute:9.1f}\n"
+                        f" c{baseline:9.2f}{absolute:9.2f}\n"
                     )
         # add new line to end
         out.write("\n")
diff --git a/geomagio/residual/SpreadsheetAbsolutesFactory.py b/geomagio/residual/SpreadsheetAbsolutesFactory.py
index 889753e03311acb172dce54f52c6be23f50e903f..1cf007856ddfb445c69d52c6d63d9a32ada9504e 100644
--- a/geomagio/residual/SpreadsheetAbsolutesFactory.py
+++ b/geomagio/residual/SpreadsheetAbsolutesFactory.py
@@ -217,13 +217,12 @@ def parse_relative_time(base_date: str, time: str) -> UTCDateTime:
     Arguments
     ---------
     base_date: date when time occurs (YYYYMMDD)
-    time: time on base_date (HHMMSS)
-        left padded with zeros to 6 characters
+    time: time on base_date (HHMMSS) or (HHMM)
     """
     try:
-        return UTCDateTime(f"{base_date}T{time:06}")
+        return UTCDateTime(f"{base_date}T{time}")
     except Exception as e:
-        print(f"error parsing relative date '{base_date}T{time:06}': {e}")
+        print(f"error parsing relative date '{base_date}T{time}': {e}")
         return None
 
 
@@ -255,9 +254,9 @@ class SpreadsheetAbsolutesFactory(object):
         for year in range(starttime.year, endtime.year + 1):
             # start in observatory year directory to scan fewer files
             observatory_directory = os.path.join(
-                self.base_directory, observatory, f"{year}", observatory
+                self.base_directory, observatory, f"{year}"
             )
-            for (dirpath, filenames) in os.walk(observatory_directory):
+            for (dirpath, _, filenames) in os.walk(observatory_directory):
                 for filename in filenames:
                     if start_filename <= filename < end_filename:
                         readings.append(
@@ -284,7 +283,7 @@ class SpreadsheetAbsolutesFactory(object):
             and self._parse_measurements(
                 measurement_sheet, metadata["date"], metadata["precision"]
             )
-            or None
+            or []
         )
         mark_azimuth = metadata["mark_azimuth"]
         return Reading(