Index: trunk/BNC/src/combination/bnccomb.cpp
===================================================================
--- trunk/BNC/src/combination/bnccomb.cpp	(revision 10954)
+++ trunk/BNC/src/combination/bnccomb.cpp	(revision 10955)
@@ -181,9 +181,10 @@
       QStringList hlp = it.next().split(" ");
       cmbAC* newAC = new cmbAC();
-      newAC->mountPoint   = hlp[0];
-      newAC->name         = hlp[1];
-      newAC->weightFactor = hlp[2].toDouble();
-      newAC->excludeSats  = hlp[3].split(QRegExp("[ ,]"), Qt::SkipEmptyParts);
-      newAC->isAPC        = bool(newAC->mountPoint.mid(0,4) == "SSRA");
+      newAC->mountPoint     = hlp[0];
+      newAC->name           = hlp[1];
+      newAC->weightFactor   = hlp[2].toDouble();
+      newAC->excludeSats    = hlp[3].split(QRegExp("[ ,]"), Qt::SkipEmptyParts);
+      newAC->isAPC          = bool(newAC->mountPoint.mid(0,4) == "SSRA");
+      newAC->attitudeSource = (hlp.size() > 4) ? hlp[4] : "Computed";
       QMapIterator<char, unsigned> itSys(_cmbSysPrn);
       // init
@@ -859,5 +860,6 @@
           dt -= (0.5 * ssrUpdateInt[pb._updateInt]);
         }
-        _newCorr->_satYawAngle = pb._yaw + pb._yawRate * dt;
+        _newCorr->_satYawAngle      = pb._yaw + pb._yawRate * dt;
+        _newCorr->_satYawAngleValid = true;
 
         // _lambdaIF
@@ -1213,6 +1215,5 @@
       if (corr->_prn.startsWith("R08")) {
         emit newMessage(("bncComb: DIAG " + corr->_prn.mid(0,3) + " getCrd FAILED").toLatin1(), false);
-      }
-      */
+      } */
       delete corr;
       it.remove();
@@ -1222,7 +1223,5 @@
     else if (corr->_prn.startsWith("R08")) {
       emit newMessage(("bncComb: DIAG " + corr->_prn.mid(0,3) + " getCrd OK").toLatin1(), false);
-    }
-    
-    */
+    }*/
     // TEMPORARY DIAGNOSTIC: how far is this epoch from the GLONASS broadcast
     // ephemeris reference time? t_ephGlo::position() numerically integrates
@@ -1251,5 +1250,24 @@
       char sys = corr->_eph->prn().system();
       masterIsAPC = _masterIsAPC[sys];
-      if (_antex->satCoMcorrection(corr->_prn, Mjd, xc.Rows(1,3), vv, dx) != success) {
+
+      // Determine attitude mode from the master orbit AC for this system
+      bncAntex::e_attMode attMode   = bncAntex::ATT_COMPUTED;
+      double              extYaw    = 0.0;
+      const QString&      masterName = _masterOrbitAC[sys];
+      for (const cmbAC* ac : _ACs) {
+        if (ac->name == masterName) {
+          if (ac->attitudeSource == "SSR" && corr->_satYawAngleValid) {
+            attMode = bncAntex::ATT_EXTERNAL;
+            extYaw  = corr->_satYawAngle;
+          }
+          else if (ac->attitudeSource == "Nominal") {
+            attMode = bncAntex::ATT_NOMINAL;
+          }
+          break;
+        }
+      }
+
+      if (_antex->satCoMcorrection(corr->_prn, Mjd, xc.Rows(1,3), vv, dx,
+                                   attMode, extYaw) != success) {
         dx = 0;
         emit newMessage("bncComb: antenna not found " + corr->_prn.mid(0,3).toLatin1(), false);
@@ -1258,4 +1276,12 @@
       if (!glonassYawLog.isEmpty()) {
         emit newMessage(("bncComb: " + glonassYawLog.trimmed()).toLatin1(), false);
+      }
+      QString gpsYawLog = _antex->takeGpsYawLog();
+      if (!gpsYawLog.isEmpty()) {
+        emit newMessage(("bncComb: " + gpsYawLog.trimmed()).toLatin1(), false);
+      }
+      QString onYawLog = _antex->takeOnYawLog();
+      if (!onYawLog.isEmpty()) {
+        emit newMessage(("bncComb: " + onYawLog.trimmed()).toLatin1(), false);
       }
     }
