Index: trunk/BNC/bncpppclient.cpp
===================================================================
--- trunk/BNC/bncpppclient.cpp	(revision 2038)
+++ trunk/BNC/bncpppclient.cpp	(revision 2039)
@@ -53,6 +53,6 @@
 ////////////////////////////////////////////////////////////////////////////
 bncPPPclient::bncPPPclient(QByteArray staID) {
-  _staID = staID;
-  _data  = 0;
+  _staID   = staID;
+  _epoData = 0;
 }
 
@@ -60,5 +60,5 @@
 ////////////////////////////////////////////////////////////////////////////
 bncPPPclient::~bncPPPclient() {
-  delete _data;
+  delete _epoData;
   QMapIterator<QString, t_eph*> it(_eph);
   while (it.hasNext()) {
@@ -82,30 +82,28 @@
   t_time tt(obs->GPSWeek, obs->GPSWeeks);
   
-  if      (!_data) {
-    _data = new t_data();
-    _data->tt = tt;
+  if      (!_epoData) {
+    _epoData = new t_epoData();
+    _epoData->tt = tt;
   }
-  else if (tt != _data->tt) {
+  else if (tt != _epoData->tt) {
     processEpoch();
-    _data = new t_data();
-    _data->tt = tt;
+    delete _epoData;
+    _epoData = new t_epoData();
+    _epoData->tt = tt;
   }
   
-  ++_data->numSat;
-  
-  if (_data->numSat > t_data::MAXOBS) {
-    cerr << "putNewObs: numSat > MAXOBS\n";
-    exit(1);
-  }
-  
-  _data->prn[_data->numSat] = 
+  t_satData* satData = new t_satData();
+      
+  satData->C1 = obs->C1;
+  satData->C2 = obs->C2;
+  satData->P1 = obs->P1;
+  satData->P2 = obs->P2;
+  satData->L1 = obs->L1;
+  satData->L2 = obs->L2;
+
+  QString prn = 
         QString("%1%2").arg(obs->satSys).arg(obs->satNum, 2, 10, QChar('0'));
-      
-  _data->C1[_data->numSat] = obs->C1;
-  _data->C2[_data->numSat] = obs->C2;
-  _data->P1[_data->numSat] = obs->P1;
-  _data->P2[_data->numSat] = obs->P2;
-  _data->L1[_data->numSat] = obs->L1;
-  _data->L2[_data->numSat] = obs->L2;
+
+  _epoData->satData[prn] = satData;
 }
 
@@ -172,10 +170,10 @@
 ////////////////////////////////////////////////////////////////////////////
 void bncPPPclient::processEpoch() {
-  if (!_data) {
-    return;
-  }
 
-  for (int is = 1; is <= _data->numSat; is++) {
-    QString prn = _data->prn[is];
+  QMapIterator<QString, t_satData*> it(_epoData->satData);
+  while (it.hasNext()) {
+    it.next();
+    QString    prn     = it.key();
+    t_satData* satData = it.value();
 
     ColumnVector xc(4);
@@ -184,6 +182,6 @@
     cout.setf(ios::fixed);
 
-    if (getSatPos(_data->tt, prn, xc, vv) == success) {
-      cout << _data->tt.timestr(1) << " " << prn.toAscii().data() << "   "
+    if (getSatPos(_epoData->tt, prn, xc, vv) == success) {
+      cout << _epoData->tt.timestr(1) << " " << prn.toAscii().data() << "   "
            << setw(14) << setprecision(3) << xc(1)                << "  "
            << setw(14) << setprecision(3) << xc(2)                << "  "
@@ -195,7 +193,3 @@
   cout << endl;
   cout.flush();
-
-  delete _data;
-  _data = 0;
 }
-
Index: trunk/BNC/bncpppclient.h
===================================================================
--- trunk/BNC/bncpppclient.h	(revision 2038)
+++ trunk/BNC/bncpppclient.h	(revision 2039)
@@ -37,18 +37,26 @@
 #define MAXPRN = 
 
-class t_data {
+class t_satData {
  public:
-  static const int MAXOBS = 56;
-  t_data() {numSat = 0;}
-  ~t_data() {}
-  t_time  tt;
-  int     numSat;  
-  QString prn[MAXOBS+1];
-  double  C1[MAXOBS+1];
-  double  C2[MAXOBS+1];
-  double  P1[MAXOBS+1];
-  double  P2[MAXOBS+1];
-  double  L1[MAXOBS+1];
-  double  L2[MAXOBS+1];
+  double C1;
+  double C2;
+  double P1;
+  double P2;
+  double L1;
+  double L2;
+};
+
+class t_epoData {
+ public:
+  t_epoData() {}
+  ~t_epoData() {
+    QMapIterator<QString, t_satData*> it(satData);
+    while (it.hasNext()) {
+      it.next();
+      delete it.value();
+    }
+  }
+  t_time                    tt;
+  QMap<QString, t_satData*> satData;
 };
 
@@ -84,5 +92,5 @@
   QMap<QString, t_eph*>  _eph;
   QMap<QString, t_corr*> _corr;
-  t_data*                _data;
+  t_epoData*             _epoData;
 };
 
