diff --git a/v2.5/toolkit/fastnlotoolkit/fastNLOCreate.cc b/v2.5/toolkit/fastnlotoolkit/fastNLOCreate.cc
index 5fc33787a0e0f9a650a9774633a3fad0565d4459..e2673e7f5e0f6838086780992ffcd118bdda9683 100644
--- a/v2.5/toolkit/fastnlotoolkit/fastNLOCreate.cc
+++ b/v2.5/toolkit/fastnlotoolkit/fastNLOCreate.cc
@@ -692,11 +692,11 @@ void fastNLOCreate::SetScenConstsDefaults() {
    fScenConsts.Mu1_Kernel = "Lagrange";
    fScenConsts.Mu1_DistanceMeasure = "loglog025";
    fScenConsts.Mu1_NNodes = 6;
-   fScenConsts.Mu1_NNodeCounting = "NodesPerWarmupRange";
+   fScenConsts.Mu1_NNodeCounting = "NodesPerBin";
    fScenConsts.Mu2_Kernel = "Lagrange";
    fScenConsts.Mu2_DistanceMeasure = "loglog025";
    fScenConsts.Mu2_NNodes = 6;
-   fScenConsts.Mu2_NNodeCounting = "NodesPerWarmupRange";
+   fScenConsts.Mu2_NNodeCounting = "NodesPerBin";
 }
 
 
@@ -4498,12 +4498,16 @@ void  fastNLOCreate::InitInterpolationKernels() {
    vector<double> wrmMu1Up, wrmMu1Dn;
    vector<double> wrmMu2Up, wrmMu2Dn;
    if (GetTheCoeffTable()->GetIRef() == 0) {
-      if (!WarmupNeeded()) {
+      if (fScenConsts.Mu1_NNodeCounting == "NodesPerDim1") {
+         wrmMu1Dn = GetObsBinsLoBounds(0);
+         wrmMu1Up = GetObsBinsUpBounds(0);
+      } else if (fScenConsts.Mu1_NNodeCounting == "NodesPerDim2") {
          wrmMu1Dn = GetObsBinsLoBounds(1);
          wrmMu1Up = GetObsBinsUpBounds(1);
-         wrmMu2Dn = GetObsBinsLoBounds(1);
-         wrmMu2Up = GetObsBinsUpBounds(1);
-      } else {
+      } else if (fScenConsts.Mu1_NNodeCounting == "NodesPerDim3") {
+         wrmMu1Dn = GetObsBinsLoBounds(2);
+         wrmMu1Up = GetObsBinsUpBounds(2);
+      } else if (fScenConsts.Mu1_NNodeCounting == "NodesPerBin") {
          wrmX = GetColumnFromTable(fWarmupConsts.Values, 1) ;// DOUBLE_COL_NS(Warmup.Values,x_min,fSteerfile);
          wrmMu1Dn = GetColumnFromTable(fWarmupConsts.Values, 3) ;//read_steer::getdoublecolumn("Warmup.Values",GetWarmupHeader(0,"min"),fSteerfile);
          wrmMu1Up = GetColumnFromTable(fWarmupConsts.Values, 4) ;//read_steer::getdoublecolumn("Warmup.Values",GetWarmupHeader(0,"max"),fSteerfile);
@@ -4511,13 +4515,34 @@ void  fastNLOCreate::InitInterpolationKernels() {
             logger.error["InitInterpolationKernels"]<<"Insufficient no. of rows for warmup values of Mu1. Exiting."<<endl;
             exit(1);
          }
-         if (fIsFlexibleScale) {
+      } else {
+         logger.error["InitInterpolationKernels"] << "Unknown value for Mu1_NNodeCounting: " << fScenConsts.Mu1_NNodeCounting << endl;
+         logger.error["InitInterpolationKernels"] << "Supported values: NodesPerBin, NodesPerDim1, NodesPerDim2, NodesPerDim3" << endl;
+         logger.error["InitInterpolationKernels"] << "Exiting." << endl;
+         exit(1);
+      }
+      if (fIsFlexibleScale) {
+         if (fScenConsts.Mu2_NNodeCounting == "NodesPerDim1") {
+            wrmMu2Dn = GetObsBinsLoBounds(0);
+            wrmMu2Up = GetObsBinsUpBounds(0);
+         } else if (fScenConsts.Mu2_NNodeCounting == "NodesPerDim2") {
+            wrmMu2Dn = GetObsBinsLoBounds(1);
+            wrmMu2Up = GetObsBinsUpBounds(1);
+         } else if (fScenConsts.Mu2_NNodeCounting == "NodesPerDim3") {
+            wrmMu2Dn = GetObsBinsLoBounds(2);
+            wrmMu2Up = GetObsBinsUpBounds(2);
+         } else if (fScenConsts.Mu2_NNodeCounting == "NodesPerBin") {
             wrmMu2Dn = GetColumnFromTable(fWarmupConsts.Values, 5) ;//read_steer::getdoublecolumn("Warmup.Values",GetWarmupHeader(1,"min"),fSteerfile);
             wrmMu2Up = GetColumnFromTable(fWarmupConsts.Values, 6) ;//read_steer::getdoublecolumn("Warmup.Values",GetWarmupHeader(1,"max"),fSteerfile);
             if (wrmMu2Dn.size()!=GetNObsBin() || wrmMu2Up.size()!= GetNObsBin()) {
                logger.error["InitInterpolationKernels"]<<"Insufficient no. of rows for warmup values for Mu2. Exiting."<<endl;
                exit(1);
             }
+         } else {
+            logger.error["InitInterpolationKernels"] << "Unknown value for Mu2_NNodeCounting: " << fScenConsts.Mu2_NNodeCounting << endl;
+            logger.error["InitInterpolationKernels"] << "Supported values: NodesPerBin, NodesPerDim1, NodesPerDim2, NodesPerDim3" << endl;
+            logger.error["InitInterpolationKernels"] << "Exiting." << endl;
+            exit(1);
          }
       }
    } else {
@@ -4768,9 +4793,9 @@ fastNLOReader* fastNLOCreate::SetIsReferenceTable(fastNLOReader* fnloread) {
    //fScenConsts.X_NoOfNodesPerMagnitude = false;
    fScenConsts.X_NNodeCounting = "NodesPerBin";
    fScenConsts.Mu1_NNodes = 1;
-   fScenConsts.Mu1_NNodeCounting = "NodesPerWarmupRange";
+   fScenConsts.Mu1_NNodeCounting = "NodesPerBin";
    fScenConsts.Mu2_NNodes = 1;
-   fScenConsts.Mu2_NNodeCounting = "NodesPerWarmupRange";
+   fScenConsts.Mu2_NNodeCounting = "NodesPerBin";
    fScenConsts.X_Kernel   = "OneNode";
    fScenConsts.Mu1_Kernel = "OneNode";
    fScenConsts.Mu2_Kernel = "OneNode";
@@ -4996,7 +5021,10 @@ bool fastNLOCreate::WarmupNeeded() const {
    if (fScenConsts.X_NNodeCounting != "NodeDensity") {
       return true;
    }
-   if (fScenConsts.Mu1_NNodeCounting == "NodesPerWarmupRange") {
+   if (fScenConsts.Mu1_NNodeCounting == "NodesPerBin") {
+      return true;
+   }
+   if (fIsFlexibleScale && fScenConsts.Mu2_NNodeCounting == "NodesPerBin") {
       return true;
    }
    return false;