diff --git a/lalapps/src/pulsar/GCT/HierarchSearchGCT.c b/lalapps/src/pulsar/GCT/HierarchSearchGCT.c
index b159c3e8ae940aeb1d841d93c6a2c4b39372c11a..a4b75350bf9f82264d727d77dc5a089d9a404d1d 100644
--- a/lalapps/src/pulsar/GCT/HierarchSearchGCT.c
+++ b/lalapps/src/pulsar/GCT/HierarchSearchGCT.c
@@ -159,9 +159,6 @@ typedef struct {
   BOOLEAN LVuseAllTerms;           /**< which terms to use in LineVeto computation - FALSE: only leading term, TRUE: all terms */
   REAL4 LVlogRhoTerm;              /**< For LineVeto statistic: extra term coming from prior normalization: log(rho_max_line^4/70) */
   REAL4Vector *LVloglX;            /**< For LineVeto statistic: vector of logs of line prior ratios lX per detector */
-  REAL8 dFreqStack;                /**< frequency resolution of Fstat calculation */
-  REAL8 df1dot;                    /**< coarse grid resolution in spindown */
-  UINT4 extraBinsFstat;            /**< Extra bins required for Fstat calculation */
 } UsefulStageVariables;
 
 
@@ -748,22 +745,6 @@ int MAIN( int argc, char *argv[]) {
     usefulParams.refTime = -1;
   }
 
-  /* set Fstat calculation frequency resolution (coarse grid) */
-  if ( LALUserVarWasSet(&uvar_dFreq) ) {
-    usefulParams.dFreqStack = uvar_dFreq;
-  }
-  else {
-    usefulParams.dFreqStack = -1;
-  }
-
-  /* set Fstat spindown resolution (coarse grid) */
-  if ( LALUserVarWasSet(&uvar_df1dot) ) {
-    usefulParams.df1dot = uvar_df1dot;
-  }
-  else {
-    usefulParams.df1dot = -1;
-  }
-
   /* for 1st stage: read sfts, calculate detector states */
   LogPrintf( LOG_NORMAL,"Reading input data ... ");
   LAL_CALL( SetUpSFTs( &status, &stackMultiSFT, &stackMultiNoiseWeights, &stackMultiDetStates, &usefulParams), &status);
@@ -826,8 +807,21 @@ int MAIN( int argc, char *argv[]) {
 
   /*------- set frequency and spindown resolutions and ranges for Fstat and semicoherent steps -----*/
 
-  dFreqStack = usefulParams.dFreqStack;
-  df1dot = usefulParams.df1dot;
+  /* set Fstat calculation frequency resolution (coarse grid) */
+  if ( LALUserVarWasSet(&uvar_dFreq) ) {
+    dFreqStack = uvar_dFreq;
+  }
+  else {
+    dFreqStack = 1.0/tStack;
+  }
+
+  /* set Fstat spindown resolution (coarse grid) */
+  if ( LALUserVarWasSet(&uvar_df1dot) ) {
+    df1dot = uvar_df1dot;
+  }
+  else {
+    df1dot = 1.0/(tStack*tStack);
+  }
 
   /* number of coarse grid spindown values */
   nf1dot = (UINT4) ceil( usefulParams.spinRange_midTime.fkdotBand[1] / df1dot) + 1;
@@ -1181,7 +1175,7 @@ int MAIN( int argc, char *argv[]) {
       {  /********Allocate fstat vector memory *****************/
 
         /* calculate number of bins for Fstat overhead due to residual spin-down */
-        semiCohPar.extraBinsFstat = usefulParams.extraBinsFstat;
+        semiCohPar.extraBinsFstat = (UINT4)( (0.25 * tObs * df1dot)/dFreqStack + 1e-6) + 1;
 
         /* calculate total number of bins for Fstat */
         binsFstatSearch = (UINT4)(usefulParams.spinRange_midTime.fkdotBand[0]/dFreqStack + 1e-6) + 1;
@@ -2089,19 +2083,6 @@ void SetUpSFTs( LALStatus *status,			/**< pointer to LALStatus structure */
     refTimeGPS = tMidGPS;
   }
 
-  /* set Fstat calculation frequency resolution (coarse grid) */
-  if ( in->dFreqStack < 0 ) {
-    in->dFreqStack = 1.0 / in->tStack;
-  }
-
-  /* set Fstat spindown resolution (coarse grid) */
-  if ( in->df1dot < 0 ) {
-    in->df1dot = 1.0 / ( in->tStack * in->tStack );
-  }
-
-  /* calculate number of bins for Fstat overhead due to residual spin-down */
-  in->extraBinsFstat = (UINT4)( (0.25 * in->tObs * in->df1dot)/in->dFreqStack + 1e-6) + 1;
-
   /* get frequency and fdot bands at start time of sfts by extrapolating from reftime */
   in->spinRange_refTime.refTime = refTimeGPS;
   TRY( LALExtrapolatePulsarSpinRange( status->statusPtr, &in->spinRange_startTime, tStartGPS, &in->spinRange_refTime), status);
@@ -2125,8 +2106,8 @@ void SetUpSFTs( LALStatus *status,			/**< pointer to LALStatus structure */
   doppWings = freqHi * in->dopplerMax;    /* maximum Doppler wing -- probably larger than it has to be */
   extraBins = HSMAX ( in->blocksRngMed/2 + 1, in->Dterms );
 
-  freqmin = freqLo - doppWings - extraBins * deltaFsft - in->extraBinsFstat * in->dFreqStack;
-  freqmax = freqHi + doppWings + extraBins * deltaFsft + in->extraBinsFstat * in->dFreqStack;
+  freqmin = freqLo - doppWings - extraBins * deltaFsft;
+  freqmax = freqHi + doppWings + extraBins * deltaFsft;
 
   /* ----- finally memory for segments of multi sfts ----- */
   stackMultiSFT->length = in->nStacks;