diff --git a/geomagio/residual/SpreadsheetSummaryFactory.py b/geomagio/residual/SpreadsheetSummaryFactory.py
index fe6b4fdf1d7f0beacdf9fa6311e0efa202bbdd23..265807861250dd438fd8a9b36330fb1c2669e7b0 100644
--- a/geomagio/residual/SpreadsheetSummaryFactory.py
+++ b/geomagio/residual/SpreadsheetSummaryFactory.py
@@ -7,7 +7,32 @@ from typing import List
 from .Absolute import Absolute
 from . import Angle
 from .Reading import Reading
-from .SpreadsheetAbsolutesFactory import parse_relative_time
+
+
+def parse_relative_time(base_date: str, time: str) -> UTCDateTime:
+    """Parse a relative date.
+
+    Arguments
+    ---------
+    base_date: date when time occurs (YYYYMMDD)
+    time: time on base_date (HHMMSS) or (HHMM)
+    """
+    try:
+        time = "{0:04d}".format(time)
+        return UTCDateTime(f"{base_date}T{time}")
+    except Exception as e:
+        print(f"error parsing relative date '{base_date}T{time}': {e}")
+        return None
+
+
+def convert_baseline(
+    baseline: float = 0,
+) -> float:
+    """Convert basline from minutes to seconds"""
+    try:
+        return baseline / 60
+    except:
+        pass
 
 
 class SpreadsheetSummaryFactory(object):
@@ -78,14 +103,21 @@ class SpreadsheetSummaryFactory(object):
 
         Outputs
         -------
-        List of valid readings from spreadsheet.
-        If all readings are valid, 4 readings are returned
+        List of readings from spreadsheet.
+        Readings are returned regardless of if they are valid.
         """
         metadata = self._parse_metadata(sheet)
         date = sheet["I1"].value
         base_date = f"{date.year}{date.month:02}{date.day:02}"
         readings = []
-        for d_n in range(10, 14):
+        sets_len = len(
+            [
+                sheet.cell(row=i, column=3).value
+                for i in range(10, 14)
+                if sheet.cell(row=i, column=3).value is not None
+            ]
+        )
+        for d_n in range(10, 10 + sets_len):
             h_n = d_n + 14
             v_n = d_n + 28
             absolutes = [
@@ -94,12 +126,12 @@ class SpreadsheetSummaryFactory(object):
                     absolute=Angle.from_dms(
                         degrees=sheet[f"C{d_n}"].value, minutes=sheet[f"D{d_n}"].value
                     ),
-                    baseline=sheet[f"H{d_n}"].value / 60,
+                    baseline=convert_baseline(sheet[f"H{d_n}"].value),
                     starttime=parse_relative_time(
-                        base_date, "{0:04d}".format(sheet[f"B{v_n}"].value)
+                        base_date, time=(sheet[f"B{v_n}"].value)
                     ),
                     endtime=parse_relative_time(
-                        base_date, "{0:04d}".format(sheet[f"B{d_n}"].value)
+                        base_date, time=(sheet[f"B{d_n}"].value)
                     ),
                     valid=not bool(sheet[f"J{d_n}"].value),
                 ),
@@ -108,10 +140,10 @@ class SpreadsheetSummaryFactory(object):
                     absolute=sheet[f"D{h_n}"].value,
                     baseline=sheet[f"H{h_n}"].value,
                     starttime=parse_relative_time(
-                        base_date, "{0:04d}".format(sheet[f"B{v_n}"].value)
+                        base_date, time=(sheet[f"B{v_n}"].value)
                     ),
                     endtime=parse_relative_time(
-                        base_date, "{0:04d}".format(sheet[f"B{h_n}"].value)
+                        base_date, time=(sheet[f"B{h_n}"].value)
                     ),
                     valid=not bool(sheet[f"J{h_n}"].value),
                 ),
@@ -120,10 +152,10 @@ class SpreadsheetSummaryFactory(object):
                     absolute=sheet[f"D{v_n}"].value,
                     baseline=sheet[f"H{v_n}"].value,
                     starttime=parse_relative_time(
-                        base_date, "{0:04d}".format(sheet[f"B{v_n}"].value)
+                        base_date, time=(sheet[f"B{v_n}"].value)
                     ),
                     endtime=parse_relative_time(
-                        base_date, "{0:04d}".format(sheet[f"B{v_n}"].value)
+                        base_date, time=(sheet[f"B{v_n}"].value)
                     ),
                     valid=not bool(sheet[f"J{d_n}"].value),
                 ),