Index: trunk/FACT++/src/drivectrl.cc
===================================================================
--- trunk/FACT++/src/drivectrl.cc	(revision 14675)
+++ trunk/FACT++/src/drivectrl.cc	(revision 14676)
@@ -701,5 +701,6 @@
     Source() : ra(0), dec(0), offset(0)
     {
-        angle[0] = angle[1] = 0;
+        angle[0] = -90;
+        angle[1] =  90;
     }
 
@@ -1402,4 +1403,14 @@
     }
 
+    bool AddSource(const string &name, const Source &src)
+    {
+        const auto it = fSources.find(name);
+        if (it!=fSources.end())
+            T::Warn("Source '"+name+"' already in list... overwriting.");
+
+        fSources[name] = src;
+        return it==fSources.end();
+    }
+
     void ReadDatabase(bool print=true)
     {
@@ -1410,23 +1421,26 @@
 
         const mysqlpp::StoreQueryResult res =
-            db.query("SELECT fSourceName, fRightAscension, fDeclination FROM source").store();
+            db.query("SELECT fSourceName, fRightAscension, fDeclination, fWobbleOffset, fWobbleAngle0, fWobbleAngle1 FROM source").store();
 
         fSources.clear();
         for (vector<mysqlpp::Row>::const_iterator v=res.begin(); v<res.end(); v++)
         {
+            const string name = (*v)[0].c_str();
+
             Source src;
             src.ra  = (*v)[1];
             src.dec = (*v)[2];
-            const string name = (*v)[0].c_str();
-
-            // FIXME: Check double names
-            fSources[name] = src;
-
-            if (print)
-            {
-                ostringstream msg;
-                msg << " " << name << setprecision(8) << ":   Ra=" << src.ra << "h Dec=" << src.dec << "deg";
-                T::Message(msg);
-            }
+            src.offset = (*v)[3];
+            src.angle[0] = (*v)[4];
+            src.angle[1] = (*v)[5];
+            AddSource(name, src);
+
+            if (!print)
+                continue;
+
+            ostringstream msg;
+            msg << " " << name << setprecision(8) << ":   Ra=" << src.ra << "h Dec=" << src.dec << "deg";
+            msg << " Wobble=[" << src.offset << "," << src.angle[0] << "," << src.angle[1] << "]";
+            T::Message(msg);
         }
 #else
@@ -1449,8 +1463,8 @@
 
             string name;
-            double ra=0;
-            double dec=0;
 
             int i=0;
+
+            Source src;
 
             string buffer;
@@ -1462,6 +1476,9 @@
                 {
                 case 0: name = buffer; break;
-                case 1: ra   = ConnectionDrive::ReadAngle(is); break;
-                case 2: dec  = ConnectionDrive::ReadAngle(is); break;
+                case 1: src.ra  = ConnectionDrive::ReadAngle(is); break;
+                case 2: src.dec = ConnectionDrive::ReadAngle(is); break;
+                case 3: is >> src.offset; break;
+                case 4: is >> src.angle[0]; break;
+                case 5: is >> src.angle[1]; break;
                 }
 
@@ -1470,13 +1487,11 @@
             }
 
-            if (i==3)
+            if (i==3 || i==6)
             {
-                Source src;
-                src.ra  = ra;
-                src.dec = dec;
-
-                // FIXME: Check double names
-                fSources[name] = src;
+                AddSource(name, src);
+                continue;
             }
+
+            T::Warn("Resource 'source' not correctly formatted: '"+*it+"'");
         }
 
