diff --git a/src/apex/aprs/igate.py b/src/apex/aprs/igate.py
index 14b12d4c58d17ff66c5d910eb51eff05b71f205f..90f004db21753d4aeabd9fc40023085b3d472849 100644
--- a/src/apex/aprs/igate.py
+++ b/src/apex/aprs/igate.py
@@ -48,11 +48,6 @@ class ReconnectingPacketBuffer(object):
         self.connect_kwargs = None
         self.connected = False
 
-    def __next_index(self):
-        if self.current_index > self.MAX_INDEX:
-            self.current_index = 0
-        return ++self.current_index
-
     def __increment_wait_time(self):
         self.reconnect_wait_time *= self.WAIT_TIME_MULTIPLIER
         if self.reconnect_wait_time > self.MAX_WAIT_TIME:
@@ -86,7 +81,7 @@ class ReconnectingPacketBuffer(object):
                     self.__reset_wait_time()
                     if read_packet:
                         with self.lock:
-                                self.from_packet_layer[self.__next_index()] = read_packet
+                                self.from_packet_layer[str(aprs_util.hash_frame(read_packet))] = read_packet
                         io_occured = True
                 except IOError:
                     try:
@@ -107,7 +102,7 @@ class ReconnectingPacketBuffer(object):
                         io_occured = True
                         self.__reset_wait_time()
                     except IOError:
-                        self.to_packet_layer[self.__next_index()] = write_packet
+                        self.to_packet_layer[str(aprs_util.hash_frame(read_packet))] = write_packet
                         try:
                             self.packet_layer.close()
                         except IOError:
@@ -150,7 +145,7 @@ class ReconnectingPacketBuffer(object):
 
     def write(self, packet):
         with self.lock:
-            self.to_packet_layer[self.__next_index()] = packet
+            self.to_packet_layer[str(aprs_util.hash_frame(read_packet))] = packet
 
 
 class IGate(object):