diff --git a/tangostationcontrol/setup.cfg b/tangostationcontrol/setup.cfg
index 1d52727f782ff41dd2e7e75b2d3137314bfdb82f..971f55af72ab629d99aa3ac67fa31e3251b99232 100644
--- a/tangostationcontrol/setup.cfg
+++ b/tangostationcontrol/setup.cfg
@@ -24,12 +24,12 @@ classifier =
 
 [options]
 package_dir=
-    =./
+    =.
 packages=find:
 python_requires = >=3.7
 
 [options.packages.find]
-where=./
+where=.
 
 [options.entry_points]
 console_scripts =
diff --git a/tangostationcontrol/tangostationcontrol/devices/sdp/statistics_collector.py b/tangostationcontrol/tangostationcontrol/devices/sdp/statistics_collector.py
index 784750cd0b01a2d7e144858af9f4eca39c6aee14..3a067aa9f6d090c0bdcb0d84f5f9766b6415791c 100644
--- a/tangostationcontrol/tangostationcontrol/devices/sdp/statistics_collector.py
+++ b/tangostationcontrol/tangostationcontrol/devices/sdp/statistics_collector.py
@@ -235,9 +235,8 @@ class XSTCollector(StatisticsCollector):
         # log if we're replacing a subband we were once recording
         previous_subband_in_slot   = self.parameters["xst_subbands"][subband_slot]
         if previous_subband_in_slot != fields.subband_index:
-            previous_subband_timestamp = datetime.datetime.fromtimestamp(self.parameters["xst_timestamps"][subband_slot])
-
-            if previous_subband_timestamp.timestamp() > 0:
+            if self.parameters["xst_timestamps"][subband_slot] > 0:
+                previous_subband_timestamp = datetime.datetime.fromtimestamp(self.parameters["xst_timestamps"][subband_slot])
                 logger.info(f"Stopped recording XSTs for subband {previous_subband_in_slot}. Last data for this subband was received at {previous_subband_timestamp}.")
    
     def xst_values(self, subband_indices = None):
diff --git a/tangostationcontrol/tangostationcontrol/statistics_writer/receiver.py b/tangostationcontrol/tangostationcontrol/statistics_writer/receiver.py
index c481d085e00170cfa4771c4af0c79dcc675460b5..b70446c30d21714b46d1e96f8cf62ac65a509103 100644
--- a/tangostationcontrol/tangostationcontrol/statistics_writer/receiver.py
+++ b/tangostationcontrol/tangostationcontrol/statistics_writer/receiver.py
@@ -27,6 +27,12 @@ class receiver:
         # add payload to the header, and return the full packet
         return header + payload
 
+    def _read(self, length: int) -> bytes:
+        """ Low-level read function to fetch at most "length" (>1) bytes. Returns
+            nothing if there is no data left. """
+
+        return os.read(self.fd, length)
+
     def read_data(self, data_length: int) -> bytes:
         """ Read exactly data_length bytes from the TCP connection. """
 
@@ -35,7 +41,7 @@ class receiver:
             # try to read the remainder.
             # NOTE: recv() may return less data than requested, and returns 0
             # if there is nothing left to read (end of stream)
-            more_data = os.read(self.fd, data_length - len(data))
+            more_data = self._read(data_length - len(data))
             if not more_data:
                 # connection got dropped
                 raise EOFError("End of stream")
@@ -54,6 +60,10 @@ class tcp_receiver(receiver):
 
         super().__init__(fd=self.sock.fileno())
 
+    def _read(self, length):
+        # On Windows, we cannot use os.read to read from sockets
+        return self.sock.recv(length)
+
     def reconnect(self):
         self.fd = None
         self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)