diff --git a/devices/clients/sst_client.py b/devices/clients/sst_client.py
index c8506e07c75148707dcbc227931d01aa05434588..8ca72e75e7c771b711aafb3c193c616fd3dee1d5 100644
--- a/devices/clients/sst_client.py
+++ b/devices/clients/sst_client.py
@@ -159,7 +159,7 @@ class SST_collector(Thread):
         self.parameters = {
             "nof_packets":           numpy.uint64(0),
             "last_packet_timestamp": numpy.uint64(0),
-            "queue_fill_percentage": numpy.float32(100 * self.queue.qsize() / self.queue.maxsize),
+            "queue_fill_percentage": numpy.float32(100 * self.queue.qsize() / self.queue.maxsize if self.queue.maxsize else 0),
 
             # Packet count for packets that could not be parsed as SSTs
             "nof_invalid_packets":   numpy.uint64(0),
@@ -172,7 +172,7 @@ class SST_collector(Thread):
 
             # Last value array we've constructed out of the packets
             "last_values":           numpy.zeros((self.MAX_INPUTS, self.MAX_SUBBANDS), dtype=numpy.uint64),
-            "last_timestamps":       numpy.zeros((self.MAX_INPUTS,), dtype=numpy.uint64),
+            "last_timestamps":       numpy.zeros((self.MAX_INPUTS,), dtype=numpy.float64),
             "integration_intervals": numpy.zeros((self.MAX_INPUTS,), dtype=numpy.float32),
         }
 
@@ -180,25 +180,26 @@ class SST_collector(Thread):
         self.start()
 
     def run(self):
-        logging.debug("starting SST thread")
+        logging.info("starting SST thread")
 
         while True:
             self.last_packet = self.queue.get()
 
             if self.last_packet is None:
-                self.queue.clear()
+                logging.info("shutting down SST thread")
                 break
 
             self.process_packet(self.last_packet)
 
-    def __del__(self):
+    def join(self, timeout=0):
+        logging.info("sending shutdown to SST thread")
         self.queue.put(None)
-        self.join()
+        super().join(timeout)
 
     def process_packet(self, packet):
         self.parameters["nof_packets"] += 1
         self.parameters["last_packet_timestamp"] = numpy.uint64(int(time.time()))
-        self.parameters["queue_fill_percentage"] = numpy.double(100 * self.queue.qsize() / self.queue.maxsize)
+        self.parameters["queue_fill_percentage"] = numpy.double(100 * self.queue.qsize() / self.queue.maxsize if self.queue.maxsize else 0)
 
         try:
             fields = StatisticsPacket(packet)
@@ -226,6 +227,6 @@ class SST_collector(Thread):
 
         # process the packet
         self.parameters["nof_valid_packets"][input_index]     += 1
-        self.parameters["last_values"][input_index]           = fields.payload_sst
-        self.parameters["last_timestamps"][input_index]       = numpy.uint64(int(self.collecting_timestamp.timestamp()))
+        self.parameters["last_values"][input_index][:fields.nof_statistics_per_packet] = fields.payload_sst
+        self.parameters["last_timestamps"][input_index]       = numpy.float64(fields.timestamp().timestamp())
         self.parameters["integration_intervals"][input_index] = fields.integration_interval()