diff --git a/src/apex/aprs/aprs.py b/src/apex/aprs/aprs.py
index ca6f966ab86505c614838c415f690013e988b3ca..2fb7f3bb2824a8b798da73e5571b5af318d8b40b 100644
--- a/src/apex/aprs/aprs.py
+++ b/src/apex/aprs/aprs.py
@@ -45,13 +45,13 @@ class Aprs(object):
         frame_len = len(raw_frame)
 
         if frame_len > 16:
-            for raw_slice in range(0, frame_len):
+            for raw_slice in range(0, frame_len - 2):
                 # Is address field length correct?
                 if raw_frame[raw_slice] & 0x01 and ((raw_slice + 1) % 7) == 0:
                     i = (raw_slice + 1) / 7
                     # Less than 2 callsigns?
                     if 1 < i < 11:
-                        if (raw_frame[raw_slice + 1] & 0x03 == 0x03 and raw_frame[raw_slice + 2] in [0xf0, 0xcf]):
+                        if raw_frame[raw_slice + 1] & 0x03 is 0x03 and raw_frame[raw_slice + 2] in [0xf0, 0xcf]:
                             frame['text'] = ''.join(map(chr, raw_frame[raw_slice + 3:]))
                             frame['destination'] = Aprs.__identity_as_string(Aprs.__extract_callsign(raw_frame))
                             frame['source'] = Aprs.__identity_as_string(Aprs.__extract_callsign(raw_frame[7:]))