Index: /trunk/BNC/src/RTCM3/RTCM3Decoder.cpp
===================================================================
--- /trunk/BNC/src/RTCM3/RTCM3Decoder.cpp	(revision 6371)
+++ /trunk/BNC/src/RTCM3/RTCM3Decoder.cpp	(revision 6372)
@@ -393,4 +393,11 @@
             emit newGalileoEph(new galileoephemeris(parser.ephemerisGALILEO));
           }
+
+          // QZSS Ephemeris
+          // --------------
+          else if (rr == 1044) {
+            decoded = true;
+            emit newGPSEph(new gpsephemeris(parser.ephemerisGPS));
+          }
         }
       }
Index: /trunk/BNC/src/bnccore.cpp
===================================================================
--- /trunk/BNC/src/bnccore.cpp	(revision 6371)
+++ /trunk/BNC/src/bnccore.cpp	(revision 6372)
@@ -84,4 +84,7 @@
     _gpsEph[ii-PRN_GPS_START] = 0;
   }
+  for (int ii = PRN_QZSS_START; ii <= PRN_QZSS_END; ii++) {
+    _qzssEph[ii-PRN_QZSS_START] = 0;
+  }
   for (int ii = PRN_GLONASS_START; ii <= PRN_GLONASS_END; ii++) {
     _glonassEph[ii-PRN_GLONASS_START] = 0;
@@ -143,4 +146,7 @@
   for (int ii = PRN_GPS_START; ii <= PRN_GPS_END; ii++) {
     delete _gpsEph[ii-PRN_GPS_START];
+  }
+  for (int ii = PRN_QZSS_START; ii <= PRN_QZSS_END; ii++) {
+    delete _qzssEph[ii-PRN_QZSS_START];
   }
   for (int ii = PRN_GLONASS_START; ii <= PRN_GLONASS_END; ii++) {
@@ -223,7 +229,12 @@
 
   gpsephemeris** ee = &_gpsEph[gpseph->satellite-1];
-
-  if ( *ee != 0 && 
-       gpseph->GPSweek == (*ee)->GPSweek && gpseph->TOC == (*ee)->TOC ) {
+  if      (PRN_GPS_START <= gpseph->satellite && gpseph->satellite <= PRN_GPS_END) {
+    ee = &_gpsEph[gpseph->satellite  - PRN_GPS_START];
+  }
+  else if (PRN_QZSS_START <= gpseph->satellite && gpseph->satellite <= PRN_QZSS_END) {
+    ee = &_qzssEph[gpseph->satellite - PRN_QZSS_START];
+  }
+
+  if ( *ee != 0 && gpseph->GPSweek == (*ee)->GPSweek && gpseph->TOC == (*ee)->TOC ) {
     checkEphemeris(*ee, gpseph);
   }
@@ -379,4 +390,8 @@
       delete _gpsEph[ii-PRN_GPS_START];
       _gpsEph[ii-PRN_GPS_START] = 0;
+    }
+    for (int ii = PRN_QZSS_START; ii <= PRN_QZSS_END; ii++) {
+      delete _qzssEph[ii-PRN_QZSS_START];
+      _qzssEph[ii-PRN_QZSS_START] = 0;
     }
     for (int ii = PRN_GLONASS_START; ii <= PRN_GLONASS_END; ii++) {
Index: /trunk/BNC/src/bnccore.h
===================================================================
--- /trunk/BNC/src/bnccore.h	(revision 6371)
+++ /trunk/BNC/src/bnccore.h	(revision 6372)
@@ -128,4 +128,5 @@
   QTextStream*           _ephStreamGalileo;
   gpsephemeris*          _gpsEph[PRN_GPS_END - PRN_GPS_START + 1];
+  gpsephemeris*          _qzssEph[PRN_QZSS_END - PRN_QZSS_START + 1];
   glonassephemeris*      _glonassEph[PRN_GLONASS_END - PRN_GLONASS_START + 1];
   galileoephemeris*      _galileoEph[PRN_GALILEO_END - PRN_GALILEO_START + 1];
