diff --git a/Transceiver52M/sigProcLib.cpp b/Transceiver52M/sigProcLib.cpp
index fe09c16..ae52894 100644
--- a/Transceiver52M/sigProcLib.cpp
+++ b/Transceiver52M/sigProcLib.cpp
@@ -1,5 +1,5 @@
 /*
-* Copyright 2008 Free Software Foundation, Inc.
+* Copyright 2008, 2011 Free Software Foundation, Inc.
 *
 * This software is distributed under the terms of the GNU Affero Public License.
 * See the COPYING file in the main directory for details.
@@ -28,6 +28,8 @@
 
 #include "sigProcLib.h"
 #include "GSMCommon.h"
+#include "sendLPF_961.h"
+#include "rcvLPF_651.h"
 
 #include <Logger.h>
 
@@ -1171,7 +1173,7 @@
 			int filterLen,
 			float gainDC)
 {
-  
+#if 0
   signalVector *LPF = new signalVector(filterLen-1);
   LPF->isRealOnly(true);
   LPF->setSymmetry(ABSSYM);
@@ -1187,11 +1189,34 @@
     *itr++ = (complex) ys*yg*yw;
     sum += ys*yg*yw;
   }
-  
+#else
+  double sum = 0.0;
+  signalVector *LPF;
+  signalVector::iterator itr;
+  if (filterLen == 651) { // receive LPF
+    LPF = new signalVector(651);
+    LPF->isRealOnly(true);
+    itr = LPF->begin();
+    for (int i = 0; i < filterLen; i++) {
+       *itr++ = complex(rcvLPF_651[i],0.0);
+       sum += rcvLPF_651[i];
+    }
+  }
+  else { 
+    LPF = new signalVector(961);
+    LPF->isRealOnly(true);
+    itr = LPF->begin();
+    for (int i = 0; i < filterLen; i++) {
+       *itr++ = complex(sendLPF_961[i],0.0);
+       sum += sendLPF_961[i];
+    }
+  }
+#endif
+
   float normFactor = gainDC/sum; //sqrtf(gainDC/vectorNorm2(*LPF));
   // normalize power
   itr = LPF->begin();
-  for (int i = 1; i < filterLen; i++) {
+  for (int i = 0; i < filterLen; i++) {
     *itr = *itr*normFactor;
     itr++;
   }
