Index: trunk/FACT++/src/drivectrl.cc
===================================================================
--- trunk/FACT++/src/drivectrl.cc	(revision 19027)
+++ trunk/FACT++/src/drivectrl.cc	(revision 19034)
@@ -247,4 +247,27 @@
         fEcec  = coeff["ECEC"];  // [rad] Elevation Centering Error (cos)
         fAcec  = coeff["ACEC"];  // [rad] Azimuth Centering Error (cos)
+    }
+
+    void print(ostream &out)
+    {
+        out << "IE    " << Tools::Form("%10.5f", 180/M_PI*fIe)   << "\u00b0   # Index Error in Elevation\n";
+        out << "IA    " << Tools::Form("%10.5f", 180/M_PI*fIa)   << "\u00b0   # Index Error in Azimuth\n";
+        out << "FLOP  " << Tools::Form("%10.5f", 180/M_PI*fFlop) << "\u00b0   # Vertical Sag\n";
+        out << "NPAE  " << Tools::Form("%10.5f", 180/M_PI*fNpae) << "\u00b0   # Az-El Nonperpendicularity\n";
+        out << "CA    " << Tools::Form("%10.5f", 180/M_PI*fCa)   << "\u00b0   # Left-Right Collimation Error\n";
+        out << "AN    " << Tools::Form("%10.5f", 180/M_PI*fAn)   << "\u00b0   # Azimuth Axis Misalignment (N-S, 1st order)\n";
+        out << "AW    " << Tools::Form("%10.5f", 180/M_PI*fAw)   << "\u00b0   # Azimuth Axis Misalignment (E-W, 1st order)\n";
+        out << "AN2   " << Tools::Form("%10.5f", 180/M_PI*fAn2)  << "\u00b0   # Azimuth Axis Misalignment (N-S, 2nd order)\n";
+        out << "AW2   " << Tools::Form("%10.5f", 180/M_PI*fAw2)  << "\u00b0   # Azimuth Axis Misalignment (E-W, 2nd order)\n";
+        out << "TF    " << Tools::Form("%10.5f", 180/M_PI*fTf)   << "\u00b0   # Tube fluxture (sin)\n";
+        out << "TX    " << Tools::Form("%10.5f", 180/M_PI*fTx)   << "\u00b0   # Tube fluxture (tan)\n";
+        out << "NRX   " << Tools::Form("%10.5f", 180/M_PI*fNrx)  << "\u00b0   # Nasmyth rotator displacement, horizontal\n";
+        out << "NRY   " << Tools::Form("%10.5f", 180/M_PI*fNry)  << "\u00b0   # Nasmyth rotator displacement, vertical\n";
+        out << "CRX   " << Tools::Form("%10.5f", 180/M_PI*fCrx)  << "\u00b0   # Alt/Az Coude Displacement (N-S)\n";
+        out << "CRY   " << Tools::Form("%10.5f", 180/M_PI*fCry)  << "\u00b0   # Alt/Az Coude Displacement (E-W)\n";
+        out << "ECES  " << Tools::Form("%10.5f", 180/M_PI*fEces) << "\u00b0   # Elevation Centering Error (sin)\n";
+        out << "ACES  " << Tools::Form("%10.5f", 180/M_PI*fAces) << "\u00b0   # Azimuth Centering Error (sin)\n";
+        out << "ECEC  " << Tools::Form("%10.5f", 180/M_PI*fEcec) << "\u00b0   # Elevation Centering Error (cos)\n";
+        out << "ACEC  " << Tools::Form("%10.5f", 180/M_PI*fAcec) << "\u00b0   # Azimuth Centering Error (cos)" << endl;
     }
 
@@ -1619,4 +1642,11 @@
     int HandleWeatherData(const EventImp &evt)
     {
+        if (evt.GetSize()==0)
+        {
+            T::Warn("MAGIC_WEATHER disconnected... using default weather values");
+            fWeather.time = Time(Time::none);
+            return T::GetCurrentState();
+        }
+
         if (!CheckEventSize(evt.GetSize(), "HandleWeatherData", 7*4+2))
         {
@@ -2293,4 +2323,10 @@
     }
 
+    int PrintPointingModel()
+    {
+        fPointingModel.print(T::Out());
+        return T::GetCurrentState();
+    }
+
     int Unlock()
     {
@@ -2886,4 +2922,9 @@
             ("(Re)connect Ethernet connection to SPS, a new address can be given"
              "|[host][string]:new ethernet address in the form <host:port>");
+
+
+        T::AddEvent("PRINT_POINTING_MODEL")
+            (bind(&StateMachineDrive::PrintPointingModel, this))
+            ("Print the ponting model.");
 
 
