diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp
index d4ca4b9..2e09512 100644
--- a/Transceiver52M/Transceiver.cpp
+++ b/Transceiver52M/Transceiver.cpp
@@ -44,6 +44,15 @@
 /* Number of running values use in noise average */
 #define NOISE_CNT			20
 
+/*
+ * Burst detection threshold
+ *
+ * Decision threshold value for burst gating on peak-to-average value of
+ * correlated synchronization sequences. Lower values pass more bursts up
+ * to upper layers but will increase the false detection rate.
+ */
+#define BURST_THRESH			4.0
+
 TransceiverState::TransceiverState()
   : mRetrans(false), mNoiseLev(0.0), mNoises(NOISE_CNT), mPower(0.0)
 {
@@ -534,23 +543,22 @@
 int Transceiver::detectBurst(signalVector &burst,
                              complex &amp, float &toa, CorrType type)
 {
-  float threshold = 5.0, rc = 0;
+  int rc = 0;
 
   switch (type) {
   case EDGE:
-    rc = detectEdgeBurst(burst, mTSC, threshold, mSPSRx,
+    rc = detectEdgeBurst(burst, mTSC, BURST_THRESH, mSPSRx,
                          amp, toa, mMaxExpectedDelayNB);
     if (rc > 0)
       break;
     else
       type = TSC;
   case TSC:
-    rc = analyzeTrafficBurst(burst, mTSC, threshold, mSPSRx,
+    rc = analyzeTrafficBurst(burst, mTSC, BURST_THRESH, mSPSRx,
                              amp, toa, mMaxExpectedDelayNB);
     break;
   case RACH:
-    threshold = 6.0;
-    rc = detectRACHBurst(burst, threshold, mSPSRx, amp, toa,
+    rc = detectRACHBurst(burst, BURST_THRESH, mSPSRx, amp, toa,
                          mMaxExpectedDelayAB);
     break;
   default:
diff --git a/Transceiver52M/sigProcLib.cpp b/Transceiver52M/sigProcLib.cpp
index 6495b1e..3682227 100644
--- a/Transceiver52M/sigProcLib.cpp
+++ b/Transceiver52M/sigProcLib.cpp
@@ -1678,6 +1678,17 @@
   return status;
 }
 
+/*
+ * Peak-to-average computation +/- range from peak in symbols
+ */
+#define COMPUTE_PEAK_MIN     2
+#define COMPUTE_PEAK_MAX     5
+
+/*
+ * Minimum number of values needed to compute peak-to-average
+ */
+#define COMPUTE_PEAK_CNT     5
+
 static float computePeakRatio(signalVector *corr,
                               int sps, float toa, complex amp)
 {
@@ -1691,7 +1702,7 @@
 
   peak = corr->begin() + (int) rint(toa);
 
-  for (int i = 2 * sps; i <= 5 * sps; i++) {
+  for (int i = COMPUTE_PEAK_MIN * sps; i <= COMPUTE_PEAK_MAX * sps; i++) {
     if (peak - i >= corr->begin()) {
       avg += (peak - i)->norm2();
       num++;
@@ -1702,7 +1713,7 @@
     }
   }
 
-  if (num < 2)
+  if (num < COMPUTE_PEAK_CNT)
     return 0.0;
 
   rms = sqrtf(avg / (float) num) + 0.00001;
