From b3eeeab4d72fde4392ef7d23ede403a3b91d1718 Mon Sep 17 00:00:00 2001
From: XANTRONIX Industrial <xan@xantronix.com>
Date: Sat, 8 Mar 2025 11:55:33 -0500
Subject: [PATCH] Initial implementation of Series in series.py

---
 lib/xmet/series.py | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)
 create mode 100644 lib/xmet/series.py

diff --git a/lib/xmet/series.py b/lib/xmet/series.py
new file mode 100644
index 0000000..d7b15d2
--- /dev/null
+++ b/lib/xmet/series.py
@@ -0,0 +1,24 @@
+from typing import Self
+
+from xmet.util import cmp
+from xmet.list import nearest
+
+class Series(dict):
+    def __init__(self):
+        super().__init__()
+
+    def intersect(self, series: Self):
+        pairs = nearest(sorted(self.keys(),   reverse=True),
+                        sorted(series.keys(), reverse=True))
+
+        sign_last = None
+
+        for pair in pairs:
+            v1, v2 = self[pair[0]], series[pair[1]]
+
+            sign = cmp(v1, v2)
+
+            if sign == 0 or (sign_last is not None and sign_last != sign):
+                return pair[0]
+
+            sign_last = sign