Index: trunk/BNC/src/RTCM/RTCM2Decoder.cpp
===================================================================
--- trunk/BNC/src/RTCM/RTCM2Decoder.cpp	(revision 6441)
+++ trunk/BNC/src/RTCM/RTCM2Decoder.cpp	(revision 6442)
@@ -291,6 +291,4 @@
       prn = sys + QString("%1").arg(corr->PRN - 200, 2, 10, QChar('0'));
     }
-
-    const t_ephPair* ePair = ephPair(prn); 
 
     double L1 = 0;
@@ -354,11 +352,9 @@
 
       // Select corresponding ephemerides
-      if (ePair) {
-        if      (ePair->last && ePair->last->IOD() == IODcorr) {
-          eph = ePair->last;
-        }
-        else if (ePair->prev && ePair->prev->IOD() == IODcorr) {
-          eph = ePair->prev;
-        }
+      if      (ephLast(prn) && ephLast(prn)->IOD() == IODcorr) {
+        eph = ephLast(prn);
+      }
+      else if (ephPrev(prn) && ephPrev(prn)->IOD() == IODcorr) {
+        eph = ephPrev(prn);
       }
 
Index: trunk/BNC/src/bncephuser.h
===================================================================
--- trunk/BNC/src/bncephuser.h	(revision 6441)
+++ trunk/BNC/src/bncephuser.h	(revision 6442)
@@ -40,7 +40,32 @@
  Q_OBJECT
 
+ public slots:
+  void slotNewGPSEph(t_ephGPS);
+  void slotNewGlonassEph(t_ephGlo);
+  void slotNewGalileoEph(t_ephGal);
+  void slotNewSBASEph(t_ephSBAS);
+
  public:
   bncEphUser(bool connectSlots);
   virtual ~bncEphUser();
+
+  t_irc putNewEph(const t_eph* newEph);
+
+  const t_eph* ephLast(const QString& prn) {
+    if (_eph.contains(prn)) {
+      return _eph[prn]->last;
+    }
+    return 0;
+  }
+
+  const t_eph* ephPrev(const QString& prn) {
+    if (_eph.contains(prn)) {
+      return _eph[prn]->prev;
+    }
+    return 0;
+  }
+
+ protected:
+  virtual void ephBufferChanged() {}
 
   class t_ephPair {
@@ -58,23 +83,4 @@
   };
 
-  const t_ephPair* ephPair(const QString& prn) {
-    if (_eph.contains(prn)) {
-      return _eph[prn];
-    }
-    else {
-      return 0;
-    }
-  }
-
-  t_irc putNewEph(const t_eph* newEph);
-
- public slots:
-  void slotNewGPSEph(t_ephGPS);
-  void slotNewGlonassEph(t_ephGlo);
-  void slotNewGalileoEph(t_ephGal);
-  void slotNewSBASEph(t_ephSBAS);
-
- protected:
-  virtual void ephBufferChanged() {}
   QMutex                    _mutex;
   QMap<QString, t_ephPair*> _eph;
Index: trunk/BNC/src/upload/bncrtnetuploadcaster.cpp
===================================================================
--- trunk/BNC/src/upload/bncrtnetuploadcaster.cpp	(revision 6441)
+++ trunk/BNC/src/upload/bncrtnetuploadcaster.cpp	(revision 6442)
@@ -73,5 +73,5 @@
   }
   else {
-    _usedEph = new QMap<QString, t_eph*>;
+    _usedEph = new QMap<QString, const t_eph*>;
   }
 
@@ -348,16 +348,16 @@
     in >> prn;
 
-    t_eph* eph = 0;
-    const bncEphUser::t_ephPair* ephPair = _ephUser->ephPair(prn);
-    if (ephPair) {
-
-      eph = ephPair->last;
+    const t_eph* ephLast = _ephUser->ephLast(prn);
+    const t_eph* ephPrev = _ephUser->ephPrev(prn);
+    const t_eph* eph     = ephLast;
+
+    if (eph) {
 
       // Use previous ephemeris if the last one is too recent
       // ----------------------------------------------------
       const int MINAGE = 60; // seconds
-      if (ephPair->prev && eph->receptDateTime().isValid() &&
+      if (ephPrev && eph->receptDateTime().isValid() &&
           eph->receptDateTime().secsTo(currentDateAndTimeGPS()) < MINAGE) {
-        eph = ephPair->prev;
+        eph = ephPrev;
       }
 
@@ -371,10 +371,10 @@
           eph = 0;
           if (_usedEph->contains(prn)) {
-            t_eph* usedEph = _usedEph->value(prn);
-            if      (usedEph == ephPair->last) {
-              eph = ephPair->last;
-            }
-            else if (usedEph == ephPair->prev) {
-              eph = ephPair->prev;
+            const t_eph* usedEph = _usedEph->value(prn);
+            if      (usedEph == ephLast) {
+              eph = ephLast;
+            }
+            else if (usedEph == ephPrev) {
+              eph = ephPrev;
             }
           }
@@ -638,5 +638,5 @@
 //
 ////////////////////////////////////////////////////////////////////////////
-void bncRtnetUploadCaster::processSatellite(t_eph* eph, int GPSweek,
+void bncRtnetUploadCaster::processSatellite(const t_eph* eph, int GPSweek,
                                             double GPSweeks, const QString& prn,
                                             const ColumnVector& rtnAPC,
Index: trunk/BNC/src/upload/bncrtnetuploadcaster.h
===================================================================
--- trunk/BNC/src/upload/bncrtnetuploadcaster.h	(revision 6441)
+++ trunk/BNC/src/upload/bncrtnetuploadcaster.h	(revision 6442)
@@ -29,5 +29,5 @@
   virtual ~bncRtnetUploadCaster();
  private:
-  void processSatellite(t_eph* eph, int GPSweek, 
+  void processSatellite(const t_eph* eph, int GPSweek, 
                         double GPSweeks, const QString& prn, 
                         const ColumnVector& rtnAPC,
@@ -65,5 +65,5 @@
   bncClockRinex* _rnx;
   bncSP3*        _sp3;
-  QMap<QString, t_eph*>* _usedEph;
+  QMap<QString, const t_eph*>* _usedEph;
 };
 
