Index: /trunk/BNC/bnccaster.cpp
===================================================================
--- /trunk/BNC/bnccaster.cpp	(revision 602)
+++ /trunk/BNC/bnccaster.cpp	(revision 603)
@@ -108,5 +108,11 @@
   delete _server;
   delete _sockets;
-  delete _epochs;
+  if (_epochs) {
+    QListIterator<Observation*> it(_epochs->values());
+    while (it.hasNext()) {
+      delete it.next();
+    }
+    delete _epochs;
+  }
 }
 
Index: /trunk/BNC/bncmain.cpp
===================================================================
--- /trunk/BNC/bncmain.cpp	(revision 602)
+++ /trunk/BNC/bncmain.cpp	(revision 603)
@@ -40,4 +40,5 @@
 
 #include <unistd.h>
+#include <signal.h>
 #include <QApplication>
 #include <QFile>
@@ -48,4 +49,12 @@
 
 using namespace std;
+
+bncCaster* _caster = 0;
+
+void catch_signal(int) {
+  delete _caster;
+  cout << "Program Interrupted by Ctrl-C" << endl;
+  exit(0);
+}
 
 // Main Program
@@ -100,11 +109,15 @@
   // ----------------------------
   else {
-    bncCaster* caster = new bncCaster(settings.value("outFile").toString(),
-                                      settings.value("outPort").toInt());
+    // Ctrl-C Signal Handling
+    // ----------------------
+    signal(SIGINT, catch_signal);
 
+    _caster = new bncCaster(settings.value("outFile").toString(),
+                            settings.value("outPort").toInt());
+    
     app.setPort(settings.value("outEphPort").toInt());
 
-    app.connect(caster, SIGNAL(getThreadErrors()), &app, SLOT(quit()));
-    app.connect(caster, SIGNAL(newMessage(const QByteArray&)), 
+    app.connect(_caster, SIGNAL(getThreadErrors()), &app, SLOT(quit()));
+    app.connect(_caster, SIGNAL(newMessage(const QByteArray&)), 
                 &app, SLOT(slotMessage(const QByteArray&)));
   
@@ -126,9 +139,9 @@
                   &app, SLOT(slotMessage(const QByteArray&)));
 
-      caster->addGetThread(getThread);
+      _caster->addGetThread(getThread);
 
       getThread->start();
     }
-    if (caster->numStations() == 0) {
+    if (_caster->numStations() == 0) {
       return 0;
     }
