Index: trunk/BNC/src/RTCM/RTCM2Decoder.cpp
===================================================================
--- trunk/BNC/src/RTCM/RTCM2Decoder.cpp	(revision 7872)
+++ trunk/BNC/src/RTCM/RTCM2Decoder.cpp	(revision 7874)
@@ -211,5 +211,5 @@
       }
     } else if (_PP.ID() == 23) {
-      if (_msg23.validMsg) {
+      if (_msg23.validMsg && !_antType.contains(_msg23.antType.c_str())) {
         _antType.push_back(_msg23.antType.c_str());
       }
Index: trunk/BNC/src/RTCM3/RTCM3Decoder.cpp
===================================================================
--- trunk/BNC/src/RTCM3/RTCM3Decoder.cpp	(revision 7872)
+++ trunk/BNC/src/RTCM3/RTCM3Decoder.cpp	(revision 7874)
@@ -1394,5 +1394,5 @@
 {
   char *antenna, type[256];
-  int antnum;
+  int antnum = -1;
   uint64_t numbits = 0, bitfield = 0;
 
@@ -1402,8 +1402,10 @@
   SKIPBITS(12)
   GETSTRING(antnum, antenna)
-  if (antnum < 265) {
+  if (antnum > -1 && antnum < 265) {
     memcpy(type, antenna, antnum);
     type[antnum] = 0;
-    _antType.push_back(type);
+    if (!_antType.contains(type)) {
+      _antType.push_back(type);
+    }
   }
   return true;
