Index: /experimental/components/SymbolSyncPoly/src/SymbolSyncPolyDSP.h
===================================================================
--- /experimental/components/SymbolSyncPoly/src/SymbolSyncPolyDSP.h	(revision 3786)
+++ /experimental/components/SymbolSyncPoly/src/SymbolSyncPolyDSP.h	(revision 3790)
@@ -61,4 +61,11 @@
             float _beta,
             unsigned int _Npfb);
+
+    ///
+    ///\todo change to : void UpdateTimingLoopFilterCoefficients(float _BT);
+    void UpdateTimingLoopFilterCoefficients(float _alpha, float _beta) {
+        alpha = _alpha;
+        beta = _beta;
+    }
 
     /// Estimate timing information
Index: /experimental/components/SymbolSyncPoly/autotest_sources/SymbolSyncPoly_testsuite.h
===================================================================
--- /experimental/components/SymbolSyncPoly/autotest_sources/SymbolSyncPoly_testsuite.h	(revision 3786)
+++ /experimental/components/SymbolSyncPoly/autotest_sources/SymbolSyncPoly_testsuite.h	(revision 3790)
@@ -10,8 +10,25 @@
 
 #include "test_02.h"
+#include "test_03.h"
 
 //
 // A simple test suite: Just inherit CxxTest::TestSuite and write tests!
 //
+
+unsigned int CountSymbolErrors( short * msg_in_i,
+        short * msg_in_q,
+        short * msg_out_i,
+        short * msg_out_q,
+        short tol,
+        unsigned int N)
+{
+    unsigned int num_errors(0);
+    for (unsigned int i=0; i<N; i++) {
+        if ( abs(msg_in_i[i]-msg_out_i[i]) > tol && abs(msg_in_q[i]-msg_out_q[i]) > tol )
+            num_errors++;
+    }
+    return num_errors;
+}
+
 
 // NOTE: " : public CxxTest::TestSuite" must be on the same line as the class
@@ -160,14 +177,12 @@
     }
 
-
     // test_02
-    void testSymbolSynchronizationTimingOffset()
+    void testSymbolSynchronizationTimingOffset_02()
     {
-        std::cout << std::endl << "testSymbolSynchronizationTimingOffset" << std::endl;
+        std::cout << std::endl << "testSymbolSynchronizationTimingOffset_02" << std::endl;
         SymbolSyncPolyDSP symbolSync;
 
         // Init variables shall match the values used in MATLAB to get the test vectors and
         // expected result
-        unsigned int Npfb_02 = 32;
         unsigned int N_out_02 = N_in_02;
 
@@ -179,4 +194,5 @@
 
         symbolSync.ConfigureFilterBank(type_02, k_02, m_02, beta_02, Npfb_02);
+        symbolSync.UpdateTimingLoopFilterCoefficients(alpha_s_02, beta_s_02);
 
         //send test data
@@ -202,5 +218,5 @@
         std::cout << "num_correct_symbols : " << num_correct_symbols << std::endl;
 
-        TS_ASSERT(num_correct_symbols > 150);
+        TS_ASSERT(num_correct_symbols > 200);
 
         delete [] I_out_02;
@@ -208,4 +224,50 @@
     }
 
+
+    // test_03
+    void testSymbolSynchronizationTimingOffset_03()
+    {
+        std::cout << std::endl << "testSymbolSynchronizationTimingOffset_03" << std::endl;
+        SymbolSyncPolyDSP symbolSync;
+
+        // Init variables shall match the values used in MATLAB to get the test vectors and
+        // expected result
+        unsigned int N_out_03 = N_in_03;
+
+        //Need some buffer for mismatched samples per symbol
+        short* I_out_03 = new short[N_out_03];
+        short* Q_out_03 = new short[N_out_03];
+        memset( I_out_03, 0, N_out_03*sizeof(short) );
+        memset( Q_out_03, 0, N_out_03*sizeof(short) );
+
+        symbolSync.ConfigureFilterBank(type_03, k_03, m_03, beta_03, Npfb_03);
+        symbolSync.UpdateTimingLoopFilterCoefficients(alpha_s_03, beta_s_03);
+
+        //send test data
+        symbolSync.SynchronizeAndDecimate(
+            I_in_03,
+            Q_in_03,
+            N_in_03,
+            I_out_03,
+            Q_out_03,
+            N_out_03);
+
+        // hard decision to see if we recovered the message correctly
+        unsigned int num_errors_2_percent;
+        num_errors_2_percent =
+            CountSymbolErrors(I_out_03+m_03-1, Q_out_03+m_03-1, msg_i_03, msg_q_03, Ac_03/50, N_out_03-m_03);
+        std::cout << "  num errors outside 2% tolerance = " << num_errors_2_percent << std::endl;
+        TS_ASSERT(num_errors_2_percent < 50);
+        
+        unsigned int num_errors_5_percent;
+        num_errors_5_percent =
+            CountSymbolErrors(I_out_03+m_03-1, Q_out_03+m_03-1, msg_i_03, msg_q_03, Ac_03/20, N_out_03-m_03);
+        std::cout << "  num errors outside 5% tolerance = " << num_errors_5_percent << std::endl;
+        TS_ASSERT(num_errors_5_percent < 20);
+
+        delete [] I_out_03;
+        delete [] Q_out_03;
+    }
+
 };
 
Index: /experimental/components/SymbolSyncPoly/autotest_sources/test_02.h
===================================================================
--- /experimental/components/SymbolSyncPoly/autotest_sources/test_02.h	(revision 3786)
+++ /experimental/components/SymbolSyncPoly/autotest_sources/test_02.h	(revision 3790)
@@ -14,5 +14,10 @@
 unsigned int m_02 = 4;          // Symbol delay
 float beta_02 = 0.25;           // Excess bandwidth factor
+unsigned int Npfb_02 = 32;      // Number of filters in filter bank
+
 short Ac_02 = 10000;            // Signal amplitude
+
+float alpha_s_02 = 0.05f;       // Loop control feedback coefficient
+float beta_s_02 = 1.025f;       // Loop control feedforware coefficient
 
 short I_in_02[512] = {
Index: /experimental/components/SymbolSyncPoly/autotest_sources/test_03.h
===================================================================
--- /experimental/components/SymbolSyncPoly/autotest_sources/test_03.h	(revision 3790)
+++ /experimental/components/SymbolSyncPoly/autotest_sources/test_03.h	(revision 3790)
@@ -0,0 +1,189 @@
+/*
+ * SymbolSyncPoly test_03.h
+ * 
+ * These data are intended to be used to test timing synchronization of
+ * the symbol synchronizer based on a polyphase filter bank.  The data
+ * include an initial sample timing offset for which the synchronizer
+ * must correct.
+ *
+ * Should acquire after the first 100 symbols.  Output symbol delay
+ * is m-1=3
+ */
+
+unsigned int N_in_03 = 512;     // Input length
+float dT_03 = 0.25f;            // Symbol timing offset (relative to symbol period)
+char type_03[] = "rrcos";       // Pulse shape
+unsigned int k_03 = 2;          // Samples per symbol
+unsigned int m_03 = 4;          // Symbol delay
+float beta_03 = 0.25;           // Excess bandwidth factor
+unsigned int Npfb_03 = 32;      // Number of filters in filter bank
+short Ac_03 = 10000;            // Signal amplitude
+
+float alpha_s_03 = 0.37f;       // Loop control feedback coefficient
+float beta_s_03 = 1.300f;       // Loop control feedforware coefficient
+
+short I_in_03[512] = {
+    7400, 6479, 8245, 8201, 819, -7657, -8175, -5711, -8489, -8637, 
+    388, 8322, 2553, -7872, -8890, -5551, -8326, -9518, 1166, 9265, 
+    575, -8746, -1891, 8549, 3607, -8325, -9406, -5845, -7372, -7987, 
+    -1943, 6273, 11107, 8116, -1442, -7868, -2214, 7578, 9067, 6139, 
+    7372, 7987, 1943, -6273, -11284, -8703, 2220, 8812, 236, -8452, 
+    -2067, 7961, 4561, -6794, -12161, -7662, 1605, 6987, 2991, -6634, 
+    -11045, -7013, -373, 6113, 9991, 7466, 889, -5820, -10768, -8410, 
+    1266, 7281, 3168, -6047, -11999, -8544, 2559, 8518, 236, -8452, 
+    -1891, 8549, 3607, -8325, -9229, -5257, -8150, -8931, 212, 7734, 
+    3331, -6928, -11045, -7013, -373, 6113, 10167, 8053, -65, -7351, 
+    -8013, -6592, -7888, -8280, -989, 7804, 8352, 6298, 7888, 8280, 
+    1165, -7216, -9129, -7242, -5734, -6819, -8942, -7827, -649, 7510, 
+    8175, 5711, 8665, 9224, -989, -8678, -1353, 7802, 4045, -7087, 
+    -11384, -6719, -373, 6113, 9991, 7466, 712, -6407, -10167, -8053, 
+    65, 7351, 7836, 6005, 8665, 9224, -1166, -9265, -399, 9333, 
+    1290, -8905, -2407, 8255, 4561, -6794, -12161, -7662, 1782, 7574, 
+    2214, -7578, -8890, -5551, -8150, -8931, 388, 8322, 2730, -7284, 
+    -9668, -6495, -6172, -8057, -6788, -6366, -8426, -7534, -1603, 5979, 
+    11284, 8703, -2043, -8225, -837, 8095, 3444, -7444, -10183, -6788, 
+    -5394, -7113, -8942, -7827, -649, 7510, 8352, 6298, 7711, 7693, 
+    1943, -6273, -11107, -8116, 1442, 7868, 2390, -6990, -9668, -6495, 
+    -5995, -7469, -7388, -6722, -7226, -7603, -6448, -6660, -8603, -8121, 
+    -649, 7510, 8175, 5711, 8665, 9224, -989, -8678, -1353, 7802, 
+    4045, -7087, -11384, -6719, -373, 6113, 9991, 7466, 889, -5820, 
+    -10768, -8410, 1266, 7281, 2991, -6634, -11045, -7013, -549, 5526, 
+    10768, 8410, -1442, -7868, -2390, 6990, 9844, 7082, 5394, 7113, 
+    8765, 7240, 1603, -5979, -11284, -8703, 2220, 8812, 236, -8452, 
+    -1891, 8549, 3784, -7737, -10183, -6788, -5218, -6526, -9543, -8184, 
+    728, 8028, 2553, -7872, -8890, -5551, -8150, -8931, 212, 7734, 
+    3507, -6341, -11822, -7956, 1605, 6987, 3168, -6047, -11822, -7956, 
+    1782, 7574, 2390, -6990, -9668, -6495, -6172, -8057, -6788, -6366, 
+    -8426, -7534, -1603, 5979, 11107, 8116, -1266, -7281, -3168, 6047, 
+    11822, 7956, -1782, -7574, -2390, 6990, 9844, 7082, 5394, 7113, 
+    8942, 7827, 826, -6922, -8953, -6654, -6334, -7175, -7565, -7309, 
+    -6448, -6660, -8426, -7534, -1603, 5979, 11107, 8116, -1266, -7281, 
+    -3168, 6047, 11999, 8544, -2383, -7931, -837, 8095, 3268, -8031, 
+    -9406, -5845, -7372, -7987, -1943, 6273, 11284, 8703, -2043, -8225, 
+    -837, 8095, 3268, -8031, -9406, -5845, -7372, -7987, -1766, 6860, 
+    10506, 7759, -65, -7351, -7836, -6005, -8489, -8637, 388, 8322, 
+    2553, -7872, -8890, -5551, -8326, -9518, 989, 8678, 1353, -7802, 
+    -4045, 7087, 11560, 7306, -228, -6469, -8614, -6948, -6511, -7763, 
+    -6611, -5778, -9380, -9065, 1329, 8384, 1176, -8389, -3268, 8031, 
+    9229, 5257, 8326, 9518, -989, -8678, -1353, 7802, 4045, -7087, 
+    -11384, -6719, -549, 5526, 10945, 8997, -2220, -8812, -59, 9039, 
+    1113, -9492, -1453, 9786, 1453, -9786, -1453, 9786, 1629, -9199, 
+    -2407, 8255, 4385, -7381, -11384, -6719, -549, 5526, 10768, 8410, 
+    -1266, -7281, -3168, 6047, 11999, 8544, -2559, -8518, -236, 8452, 
+    2067, -7961, -4385, 7381, 11560, 7306, -405, -7057, -8013, -6592, 
+    -7888, -8280, -989, 7804, 8352, 6298, 7888, 8280, 989, -7804, 
+    -8352, -6298, -7888, -8280, -1165, 7216, 8953, 6654, 6511, 7763, 
+    6788, 6366, 8603, 8121, 738, -7216, -8652, -6476, -7111, -7728, 
+    -4277, 247};
+
+
+short Q_in_03[512] = {
+    2555, -6160, -11465, -8036, 1612, 7721, 2214, -7578, -8890, -5551, 
+    -8150, -8931, 388, 8322, 2553, -7872, -9067, -6139, -7372, -7987, 
+    -1943, 6273, 11284, 8703, -2220, -8812, -236, 8452, 2067, -7961, 
+    -4561, 6794, 12161, 7662, -1605, -6987, -3168, 6047, 11822, 7956, 
+    -1782, -7574, -2214, 7578, 8890, 5551, 8326, 9518, -989, -8678, 
+    -1176, 8389, 3268, -8031, -9406, -5845, -7549, -8574, -989, 7804, 
+    8175, 5711, 8489, 8637, -388, -8322, -2553, 7872, 8890, 5551, 
+    8326, 9518, -1166, -9265, -575, 8746, 1891, -8549, -3607, 8325, 
+    9406, 5845, 7549, 8574, 989, -7804, -8352, -6298, -7711, -7693, 
+    -1766, 6860, 10506, 7759, -65, -7351, -8013, -6592, -7888, -8280, 
+    -989, 7804, 8352, 6298, 7711, 7693, 1943, -6273, -11107, -8116, 
+    1442, 7868, 2214, -7578, -8890, -5551, -8326, -9518, 1166, 9265, 
+    399, -9333, -1290, 8905, 2230, -8843, -3607, 8325, 9229, 5257, 
+    8150, 8931, -388, -8322, -2553, 7872, 9067, 6139, 7549, 8574, 
+    1165, -7216, -9129, -7242, -5557, -6232, -9719, -8771, 1505, 8971, 
+    399, -9333, -1290, 8905, 2230, -8843, -3784, 7737, 10007, 6201, 
+    5995, 7469, 7388, 6722, 7049, 7016, 7049, 7016, 7049, 7016, 
+    7049, 7016, 7226, 7603, 6272, 6072, 9204, 8477, -551, -7440, 
+    -3507, 6341, 11822, 7956, -1605, -6987, -2991, 6634, 11221, 7600, 
+    -405, -7057, -7836, -6005, -8665, -9224, 1166, 9265, 399, -9333, 
+    -1290, 8905, 2230, -8843, -3784, 7737, 10183, 6788, 5218, 6526, 
+    9719, 8771, -1329, -8384, -1176, 8389, 3444, -7444, -10183, -6788, 
+    -5394, -7113, -8765, -7240, -1603, 5979, 11284, 8703, -2220, -8812, 
+    -59, 9039, 1290, -8905, -2230, 8843, 3784, -7737, -10183, -6788, 
+    -5218, -6526, -9543, -8184, 728, 8028, 2553, -7872, -8890, -5551, 
+    -8150, -8931, 212, 7734, 3507, -6341, -11822, -7956, 1782, 7574, 
+    2390, -6990, -9844, -7082, -5218, -6526, -9543, -8184, 551, 7440, 
+    3331, -6928, -11045, -7013, -373, 6113, 9991, 7466, 712, -6407, 
+    -10167, -8053, -111, 6763, 8790, 7536, 5557, 6232, 9543, 8184, 
+    -728, -8028, -2730, 7284, 9844, 7082, 5218, 6526, 9719, 8771, 
+    -1505, -8971, -575, 8746, 1891, -8549, -3607, 8325, 9406, 5845, 
+    7549, 8574, 1165, -7216, -8953, -6654, -6334, -7175, -7388, -6722, 
+    -7049, -7016, -7049, -7016, -7049, -7016, -7226, -7603, -6272, -6072, 
+    -9380, -9065, 1329, 8384, 1353, -7802, -4222, 6500, 12161, 7662, 
+    -1782, -7574, -2390, 6990, 9844, 7082, 5394, 7113, 8942, 7827, 
+    826, -6922, -8953, -6654, -6511, -7763, -6788, -6366, -8603, -8121, 
+    -826, 6922, 9129, 7242, 5557, 6232, 9543, 8184, -728, -8028, 
+    -2553, 7872, 9067, 6139, 7549, 8574, 1165, -7216, -8953, -6654, 
+    -6334, -7175, -7388, -6722, -7049, -7016, -7226, -7603, -6272, -6072, 
+    -9380, -9065, 1505, 8971, 399, -9333, -1113, 9492, 1453, -9786, 
+    -1453, 9786, 1453, -9786, -1629, 9199, 2407, -8255, -4385, 7381, 
+    11384, 6719, 373, -6113, -10167, -8053, 65, 7351, 7836, 6005, 
+    8489, 8637, -212, -7734, -3507, 6341, 11822, 7956, -1605, -6987, 
+    -2991, 6634, 11045, 7013, 373, -6113, -10167, -8053, 65, 7351, 
+    7836, 6005, 8489, 8637, -212, -7734, -3331, 6928, 11045, 7013, 
+    549, -5526, -10945, -8997, 2043, 8225, 837, -8095, -3444, 7444, 
+    10007, 6201, 5995, 7469, 7565, 7309, 6448, 6660, 8603, 8121, 
+    649, -7510, -8352, -6298, -7711, -7693, -1766, 6860, 10506, 7759, 
+    -65, -7351, -8013, -6592, -7888, -8280, -989, 7804, 8352, 6298, 
+    7888, 8280, 989, -7804, -8352, -6298, -7711, -7693, -1943, 6273, 
+    11107, 8116, -1266, -7281, -3080, 6340, 11522, 7778, -1005, -7022, 
+    -5502, 21};
+
+short msg_i_03[256] = {
+    7071, 7071, 7071, -7071, -7071, -7071, 7071, -7071, -7071, -7071, 
+    7071, -7071, 7071, -7071, -7071, -7071, 7071, 7071, -7071, 7071, 
+    7071, 7071, -7071, -7071, 7071, -7071, 7071, -7071, -7071, 7071, 
+    -7071, -7071, 7071, 7071, -7071, -7071, 7071, -7071, -7071, 7071, 
+    -7071, 7071, -7071, -7071, -7071, 7071, -7071, -7071, 7071, 7071, 
+    -7071, -7071, -7071, 7071, 7071, 7071, -7071, -7071, -7071, -7071, 
+    7071, 7071, 7071, -7071, 7071, -7071, -7071, 7071, 7071, -7071, 
+    -7071, 7071, 7071, 7071, -7071, 7071, -7071, 7071, -7071, -7071, 
+    7071, -7071, -7071, -7071, 7071, -7071, -7071, -7071, -7071, -7071, 
+    7071, 7071, -7071, 7071, -7071, -7071, -7071, -7071, 7071, 7071, 
+    7071, -7071, -7071, 7071, -7071, -7071, -7071, -7071, -7071, -7071, 
+    -7071, 7071, 7071, 7071, -7071, 7071, -7071, -7071, 7071, 7071, 
+    -7071, -7071, 7071, -7071, -7071, 7071, 7071, -7071, 7071, 7071, 
+    7071, 7071, -7071, -7071, 7071, -7071, 7071, -7071, -7071, -7071, 
+    -7071, 7071, -7071, -7071, -7071, 7071, -7071, -7071, 7071, -7071, 
+    -7071, 7071, -7071, -7071, -7071, -7071, -7071, 7071, 7071, -7071, 
+    7071, 7071, -7071, 7071, 7071, 7071, 7071, -7071, -7071, -7071, 
+    -7071, -7071, -7071, 7071, 7071, -7071, 7071, 7071, -7071, 7071, 
+    -7071, -7071, -7071, 7071, 7071, -7071, 7071, -7071, -7071, -7071, 
+    7071, 7071, -7071, -7071, -7071, 7071, -7071, -7071, -7071, 7071, 
+    -7071, 7071, 7071, -7071, -7071, -7071, -7071, -7071, 7071, -7071, 
+    7071, 7071, 7071, -7071, 7071, -7071, -7071, 7071, 7071, -7071, 
+    7071, -7071, 7071, -7071, 7071, -7071, 7071, -7071, -7071, 7071, 
+    7071, -7071, 7071, 7071, -7071, 7071, -7071, 7071, 7071, -7071, 
+    -7071, -7071, 7071, 7071, 7071, -7071, -7071, -7071, 7071, 7071, 
+    7071, 7071, 7071, -7071, -7071, -7071};
+
+short msg_q_03[256] = {
+   7071, -7071, -7071, 7071, -7071, -7071, -7071, 7071, -7071, -7071, 
+    -7071, 7071, 7071, -7071, 7071, -7071, 7071, 7071, -7071, 7071, 
+    7071, -7071, 7071, 7071, 7071, -7071, 7071, -7071, -7071, -7071, 
+    7071, 7071, 7071, -7071, 7071, 7071, 7071, -7071, 7071, -7071, 
+    7071, 7071, 7071, -7071, -7071, -7071, 7071, 7071, -7071, -7071, 
+    -7071, 7071, 7071, 7071, -7071, -7071, 7071, -7071, -7071, -7071, 
+    7071, -7071, 7071, -7071, 7071, 7071, 7071, -7071, 7071, 7071, 
+    7071, -7071, -7071, -7071, -7071, 7071, -7071, 7071, -7071, 7071, 
+    7071, 7071, 7071, 7071, 7071, 7071, 7071, 7071, 7071, 7071, 
+    -7071, 7071, 7071, -7071, 7071, 7071, -7071, -7071, -7071, 7071, 
+    -7071, 7071, -7071, 7071, 7071, 7071, 7071, -7071, 7071, -7071, 
+    -7071, -7071, -7071, 7071, 7071, -7071, 7071, -7071, 7071, -7071, 
+    -7071, -7071, -7071, 7071, -7071, -7071, -7071, 7071, -7071, -7071, 
+    7071, -7071, -7071, -7071, -7071, 7071, -7071, -7071, 7071, 7071, 
+    -7071, -7071, 7071, 7071, 7071, 7071, -7071, 7071, 7071, 7071, 
+    7071, -7071, 7071, -7071, 7071, 7071, 7071, -7071, -7071, -7071, 
+    -7071, -7071, -7071, -7071, -7071, -7071, -7071, 7071, -7071, 7071, 
+    7071, -7071, 7071, 7071, 7071, 7071, -7071, -7071, -7071, -7071, 
+    -7071, 7071, 7071, 7071, 7071, -7071, 7071, 7071, 7071, -7071, 
+    -7071, -7071, -7071, -7071, -7071, -7071, -7071, 7071, -7071, 7071, 
+    -7071, 7071, -7071, 7071, -7071, 7071, 7071, -7071, -7071, 7071, 
+    7071, 7071, -7071, 7071, 7071, -7071, 7071, 7071, -7071, -7071, 
+    7071, 7071, 7071, -7071, 7071, 7071, -7071, -7071, 7071, -7071, 
+    7071, 7071, 7071, 7071, 7071, 7071, -7071, -7071, -7071, 7071, 
+    7071, -7071, -7071, -7071, 7071, 7071, 7071, -7071, -7071, -7071, 
+    7071, 7071, -7071, 7071, 7071, -7071};
+
