Index: trunk/BNS/bns.cpp
===================================================================
--- trunk/BNS/bns.cpp	(revision 1057)
+++ trunk/BNS/bns.cpp	(revision 1058)
@@ -57,5 +57,6 @@
   _bnseph = new t_bnseph(parent);
 
-  connect(_bnseph, SIGNAL(newEph(t_eph*)), this, SLOT(slotNewEph(t_eph*)));
+  connect(_bnseph, SIGNAL(newEph(t_eph*)), 
+          this, SLOT(slotNewEph(t_eph*, int)));
   connect(_bnseph, SIGNAL(newMessage(QByteArray)),
           this, SLOT(slotMessage(const QByteArray)));
@@ -265,7 +266,9 @@
 // 
 ////////////////////////////////////////////////////////////////////////////
-void t_bns::slotNewEph(t_eph* ep) {
+void t_bns::slotNewEph(t_eph* ep, int nBytes) {
 
   QMutexLocker locker(&_mutex);
+
+  emit(newEphBytes(nBytes));
 
   t_ephPair* pair;
@@ -334,4 +337,6 @@
 
   QByteArray line = _clkSocket->readLine();
+
+  emit(newClkBytes(line.length()));
 
   if (line.indexOf('*') == -1) {
@@ -417,4 +422,5 @@
         int len = MakeClockOrbit(&co, COTYPE_AUTO, 0, obuffer, sizeof(obuffer));
         if (len > 0) {
+          emit(newOutBytes(len));
           if (_outSocket) {
             _outSocket->write(obuffer, len);
Index: trunk/BNS/bns.h
===================================================================
--- trunk/BNS/bns.h	(revision 1057)
+++ trunk/BNS/bns.h	(revision 1058)
@@ -40,4 +40,7 @@
 
  signals:
+  void newClkBytes(int nBytes);
+  void newEphBytes(int nBytes);
+  void newOutBytes(int nBytes);
   void newMessage(const QByteArray msg);
   void error(const QByteArray msg);
@@ -45,5 +48,5 @@
  
  private slots:
-  void slotNewEph(t_eph* ep);
+  void slotNewEph(t_eph* ep, int nBytes);
   void slotNewConnection();
   void slotMessage(const QByteArray msg);
Index: trunk/BNS/bnseph.cpp
===================================================================
--- trunk/BNS/bnseph.cpp	(revision 1057)
+++ trunk/BNS/bnseph.cpp	(revision 1058)
@@ -82,6 +82,9 @@
 void t_bnseph::readEph() {
 
+  int nBytes = 0;
+
   t_eph* eph = 0;
   QByteArray line = waitForLine(_socket);
+  nBytes += line.length();
 
   QTextStream in(line);
@@ -105,4 +108,5 @@
   for (int ii = 2; ii <= numlines; ii++) {
     QByteArray line = waitForLine(_socket);
+    nBytes += line.length();
     lines << line;
   }
@@ -110,5 +114,5 @@
   eph->read(lines);
 
-  emit(newEph(eph));
+  emit(newEph(eph, nBytes));
 }
 
Index: trunk/BNS/bnseph.h
===================================================================
--- trunk/BNS/bnseph.h	(revision 1057)
+++ trunk/BNS/bnseph.h	(revision 1058)
@@ -108,5 +108,5 @@
 
  signals:
-  void newEph(t_eph* eph);
+  void newEph(t_eph* eph, int nBytes);
   void newMessage(const QByteArray msg);
   void error(const QByteArray msg);
Index: trunk/BNS/bnswindow.cpp
===================================================================
--- trunk/BNS/bnswindow.cpp	(revision 1057)
+++ trunk/BNS/bnswindow.cpp	(revision 1058)
@@ -358,4 +358,24 @@
   _log->setWhatsThis(tr("Records of BNS's activities are shown in the Log section."));
 
+  // Status
+  // ------
+  _status = new QWidget();
+  QGridLayout* layout_status = new QGridLayout;
+
+  _statusLbl[0] = new QLabel("0 byte(s)"); _statusCnt[0] = 0;
+  _statusLbl[1] = new QLabel("0 byte(s)"); _statusCnt[1] = 0;
+  _statusLbl[2] = new QLabel("0 byte(s)"); _statusCnt[2] = 0;
+  _statusLbl[3] = new QLabel("Input Ephemeris");  
+  _statusLbl[4] = new QLabel("Input Clock & Orbits");
+  _statusLbl[5] = new QLabel("Output");  
+
+  layout_status->addWidget(_statusLbl[3], 0, 0);
+  layout_status->addWidget(_statusLbl[0], 0, 1);
+  layout_status->addWidget(_statusLbl[4], 0, 2);
+  layout_status->addWidget(_statusLbl[1], 0, 3);
+  layout_status->addWidget(_statusLbl[5], 1, 2);
+  layout_status->addWidget(_statusLbl[2], 1, 3);
+  _status->setLayout(layout_status);
+
   // Main Layout
   // -----------
@@ -363,4 +383,5 @@
   mainLayout->addWidget(tabs);
   mainLayout->addWidget(_log);
+  mainLayout->addWidget(_status);
 
   _canvas->setLayout(mainLayout);
@@ -541,4 +562,36 @@
           this, SLOT(slotError(const QByteArray)));
 
+  connect(_bns, SIGNAL(newEphBytes(int)), this, SLOT(slotEphBytes(int)));
+  connect(_bns, SIGNAL(newClkBytes(int)), this, SLOT(slotClkBytes(int)));
+  connect(_bns, SIGNAL(newOutBytes(int)), this, SLOT(slotOutBytes(int)));
+
   _bns->start();
 }
+
+// Input and output bytes statistics
+////////////////////////////////////////////////////////////////////////////
+void bnsWindow::slotEphBytes(int nBytes) {
+  updateStatus(0, nBytes);
+}
+void bnsWindow::slotClkBytes(int nBytes) {
+  updateStatus(1, nBytes);
+}
+void bnsWindow::slotOutBytes(int nBytes) {
+  updateStatus(2, nBytes);
+}
+
+void bnsWindow::updateStatus(int ii, int nBytes) {
+  QMutexLocker locker(&_mutex);
+
+  _statusCnt[ii] += nBytes;
+
+  if      (_statusCnt[ii] < 1e3) {
+    _statusLbl[ii]->setText(QString("%1 byte(s)").arg((int)_statusCnt[ii]));
+  }
+  else if (_statusCnt[ii] < 1e6) {
+    _statusLbl[ii]->setText(QString("%1 kb").arg(_statusCnt[ii]/1.e3, 5));
+  }
+  else {
+    _statusLbl[ii]->setText(QString("%1 Mb").arg(_statusCnt[ii]/1.e6, 5));
+  }
+}
Index: trunk/BNS/bnswindow.h
===================================================================
--- trunk/BNS/bnswindow.h	(revision 1057)
+++ trunk/BNS/bnswindow.h	(revision 1058)
@@ -42,4 +42,7 @@
   void slotStart();
   void slotStop();
+  void slotEphBytes(int nBytes);
+  void slotClkBytes(int nBytes);
+  void slotOutBytes(int nBytes);
 
  protected:
@@ -50,4 +53,5 @@
   void AddToolbar();
   void deleteBns();
+  void updateStatus(int ii, int nBytes);
 
   QMenu*     _menuHlp;
@@ -88,4 +92,9 @@
   QTextEdit*  _log;
 
+  QWidget*    _status;
+  QLabel*     _statusLbl[6];  
+  double      _statusCnt[3];
+  QMutex      _mutex;
+
   t_bns*      _bns;
 };
