Index: trunk/BNC/src/rinex/dopplot.cpp
===================================================================
--- trunk/BNC/src/rinex/dopplot.cpp	(revision 4674)
+++ trunk/BNC/src/rinex/dopplot.cpp	(revision 4675)
@@ -70,5 +70,4 @@
   setAxisLabelRotation(QwtPlot::xBottom, -10.0);
   setAxisLabelAlignment(QwtPlot::xBottom, Qt::AlignLeft | Qt::AlignBottom);
-  setAxisScale(QwtPlot::yLeft, 0.0, 90.0);
 
   // Legend
@@ -79,4 +78,7 @@
   // Curves
   // ------
+  if (obsStat) {
+    addCurve("# Sat", obsStat->_mjdX24, obsStat->_numSat);
+  }
   
   // Important !!!
@@ -88,10 +90,8 @@
 //////////////////////////////////////////////////////////////////////////////
 QwtPlotCurve* t_dopPlot::addCurve(const QString& name, 
-                                    const QwtSymbol& symbol,
-                                    const QVector<double>& xData,
-                                    const QVector<double>& yData) {
+                                  const QVector<double>& xData,
+                                  const QVector<double>& yData) {
+
   QwtPlotCurve* curve = new QwtPlotCurve(name);
-  curve->setSymbol(new QwtSymbol(symbol));
-  curve->setStyle(QwtPlotCurve::NoCurve);
   curve->setXAxis(QwtPlot::xBottom);
   curve->setYAxis(QwtPlot::yLeft);
@@ -99,15 +99,4 @@
   curve->attach(this);
 
-  if (xData.size() > 0 && yData.size() > 0) {
-    QwtPlotMarker* marker = new QwtPlotMarker();
-    int ii = xData.size() / 2;
-    marker->setValue(xData[ii], yData[ii]);
-    QwtText text(name);
-    text.setColor(symbol.pen().color());
-    marker->setLabel(text);
-    marker->setLabelAlignment(Qt::AlignTop);
-    marker->attach(this);
-  }
-
   return curve;
 }
Index: trunk/BNC/src/rinex/dopplot.h
===================================================================
--- trunk/BNC/src/rinex/dopplot.h	(revision 4674)
+++ trunk/BNC/src/rinex/dopplot.h	(revision 4675)
@@ -16,5 +16,5 @@
 
 private:
-  QwtPlotCurve* addCurve(const QString& name, const QwtSymbol& symbol,
+  QwtPlotCurve* addCurve(const QString& name,
                          const QVector<double>& xData, 
                          const QVector<double>& yData);
Index: trunk/BNC/src/rinex/reqcanalyze.cpp
===================================================================
--- trunk/BNC/src/rinex/reqcanalyze.cpp	(revision 4674)
+++ trunk/BNC/src/rinex/reqcanalyze.cpp	(revision 4675)
@@ -221,4 +221,5 @@
   // --------------------
   try {
+    unsigned iEpo = 0;
     while ( (_currEpo = obsFile->nextEpoch()) != 0) {
   
@@ -238,4 +239,6 @@
   
         _allObsMap[prn].addObs(obs);
+
+        prepareObsStat(iEpo, obsFile->interval());
       }
   
@@ -260,11 +263,9 @@
 
   QMutableMapIterator<QString, t_allObs> it(_allObsMap);
-  bool firstPrn = true;
   while (it.hasNext()) {
     it.next();
     QString    prn     = it.key();
     preparePlotData(prn, xyz, obsFile->interval(), 
-                    dataMP1, dataMP2, dataSNR1, dataSNR2, firstPrn);
-    firstPrn = false;
+                    dataMP1, dataMP2, dataSNR1, dataSNR2);
   }
 
@@ -379,4 +380,14 @@
 //  
 ////////////////////////////////////////////////////////////////////////////
+void t_reqcAnalyze::prepareObsStat(unsigned iEpo, double obsInterval) {
+  const int numEpo = int(600.0 / obsInterval); // # epochs in one chunk (10 min)
+  if (iEpo % numEpo == 0) {
+    _obsStat._mjdX24 << _currEpo->tt.mjddec() * 24.0;
+    _obsStat._numSat << _currEpo->rnxSat.size();
+  }
+}
+
+//  
+////////////////////////////////////////////////////////////////////////////
 void t_reqcAnalyze::preparePlotData(const QString& prn, const ColumnVector& xyz,
                                     double obsInterval,
@@ -384,6 +395,5 @@
                                     QVector<t_polarPoint*>* dataMP2,
                                     QVector<t_polarPoint*>* dataSNR1, 
-                                    QVector<t_polarPoint*>* dataSNR2,
-                                    bool firstPrn) {
+                                    QVector<t_polarPoint*>* dataSNR2) {
 
   const int chunkStep = int( 30.0 / obsInterval); // chunk step (30 sec)  
@@ -391,8 +401,4 @@
 
   t_allObs& allObs = _allObsMap[prn];
-
-  if (firstPrn) {
-    _obsStat.reset();
-  }
 
   // Loop over all Chunks of Data
@@ -401,9 +407,10 @@
        chunkStart += chunkStep) {
 
-    // Chunk-Speicific Variables 
-    // -------------------------
+    // Chunk-Specific Variables 
+    // ------------------------
     bncTime currTime;
     bncTime prevTime;
     bncTime chunkStartTime;
+    double  mjdX24  = 0.0;
     bool    availL1 = false;
     bool    availL2 = false;
@@ -433,4 +440,5 @@
       if (ii == 0) {
         chunkStartTime = currTime;
+        mjdX24 = chunkStartTime.mjddec() * 24.0;
 
         if (xyz.size()) {
@@ -457,5 +465,5 @@
         }
       }
-
+ 
       // Check Interval
       // --------------
@@ -518,5 +526,4 @@
     // Availability Plot Data
     // ----------------------
-    double mjdX24 = chunkStartTime.mjddec() * 24.0;
     if (availL1) {
       if      (slipL1) {
Index: trunk/BNC/src/rinex/reqcanalyze.h
===================================================================
--- trunk/BNC/src/rinex/reqcanalyze.h	(revision 4674)
+++ trunk/BNC/src/rinex/reqcanalyze.h	(revision 4675)
@@ -138,5 +138,6 @@
                        QVector<t_polarPoint*>* dataMP2,
                        QVector<t_polarPoint*>* dataSNR1, 
-                       QVector<t_polarPoint*>* dataSNR2, bool firstPrn);
+                       QVector<t_polarPoint*>* dataSNR2);
+  void prepareObsStat(unsigned iEpo, double obsInterval);
 
   QString                    _logFileName;
