diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/eFEXFPGA.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/eFEXFPGA.h
index 05e8c3eb8d86bbdef3f5c4d6c053e1c60c371aac..a767f4102ada9350ca29951ee5345b21f97adb0a 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/eFEXFPGA.h
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/eFEXFPGA.h
@@ -52,7 +52,7 @@ namespace LVL1 {
     virtual int getID() override {return m_id;}
 
     virtual void SetTowersAndCells_SG( int [][6] ) override ;
-    virtual void SetIsoWP(std::vector<unsigned int> &, std::vector<unsigned int> &, unsigned int &) override ;
+    virtual void SetIsoWP(std::vector<unsigned int> &, std::vector<unsigned int> &, unsigned int &, unsigned int &) override ;
 
     virtual std::vector <uint32_t> getEmTOBs() override ;
     virtual std::vector <uint32_t> getTauTOBs() override ;
diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/eFEXFPGA.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/eFEXFPGA.cxx
index 6fcd651df0e0c08567006f01ba8500547b5457b5..192414cfef5d6feef76711b582372e272d8462ab 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/eFEXFPGA.cxx
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/eFEXFPGA.cxx
@@ -29,7 +29,7 @@
 #include "StoreGate/ReadHandle.h"
 #include "SGTools/TestStore.h"
 #include "TrigConfData/L1Menu.h"
-
+#include <unordered_map>
 
 #include <iostream>
 #include <fstream>
@@ -165,9 +165,15 @@ StatusCode eFEXFPGA::execute(eFEXOutputCollection* inputOutputCollection){
       unsigned int RetaWP = 0;
       unsigned int RhadWP = 0;
       unsigned int WstotWP = 0;
-      SetIsoWP(RetaCoreEnv,threshReta,RetaWP);
-      SetIsoWP(RhadCoreEnv,threshRhad,RhadWP);
-      SetIsoWP(WstotCoreEnv,threshWstot,WstotWP);
+      
+      // bitshifts for the different iso vars
+      unsigned int RetaBitS = 3;
+      unsigned int RhadBitS = 3;
+      unsigned int WstotBitS = 5;
+      
+      SetIsoWP(RetaCoreEnv,threshReta,RetaWP,RetaBitS);
+      SetIsoWP(RhadCoreEnv,threshRhad,RhadWP,RhadBitS);
+      SetIsoWP(WstotCoreEnv,threshWstot,WstotWP,WstotBitS);
       int eta_ind = ieta; // No need to offset eta index with new 0-5 convention
       int phi_ind = iphi - 1;
 
@@ -340,7 +346,8 @@ void eFEXFPGA::SetTowersAndCells_SG(int tmp_eTowersIDs_subset[][6]){
 }
 
 
-void eFEXFPGA::SetIsoWP(std::vector<unsigned int> & CoreEnv, std::vector<unsigned int> & thresholds, unsigned int & workingPoint) {
+void eFEXFPGA::SetIsoWP(std::vector<unsigned int> & CoreEnv, std::vector<unsigned int> & thresholds, unsigned int & workingPoint, unsigned int & bitshift) {
+  // Working point evaluted by Core * 2^bitshift > Threshold * Environment conditions
 
   bool CoreOverflow = false;
   bool EnvOverflow = false;
@@ -348,7 +355,9 @@ void eFEXFPGA::SetIsoWP(std::vector<unsigned int> & CoreEnv, std::vector<unsigne
   bool ThrEnvOverflowM = false;
   bool ThrEnvOverflowT = false;
 
-  if (CoreEnv[0] > 0xffff) CoreOverflow = true;
+  std::unordered_map<unsigned int, unsigned int> bsmap { {3, 8}, {5, 32}};
+
+  if (CoreEnv[0]*bsmap[bitshift] > 0xffff) CoreOverflow = true;
   if (CoreEnv[1] > 0xffff) EnvOverflow = true;
   if (CoreEnv[1]*thresholds[0] > 0xffff) ThrEnvOverflowL = true;
   if (CoreEnv[1]*thresholds[1] > 0xffff) ThrEnvOverflowM = true;
@@ -356,13 +365,13 @@ void eFEXFPGA::SetIsoWP(std::vector<unsigned int> & CoreEnv, std::vector<unsigne
 
   if (CoreOverflow == false) {
     if (EnvOverflow == false) {
-      if ( (CoreEnv[0] > (thresholds[0]*CoreEnv[1])) && ThrEnvOverflowL == false ) {
+      if ( (CoreEnv[0]*bsmap[bitshift] > (thresholds[0]*CoreEnv[1])) && ThrEnvOverflowL == false ) {
 	workingPoint = 1;
       } 
-      else if ( (CoreEnv[0] > (thresholds[1]*CoreEnv[1])) && ThrEnvOverflowM == false ) {
+      else if ( (CoreEnv[0]*bsmap[bitshift] > (thresholds[1]*CoreEnv[1])) && ThrEnvOverflowM == false ) {
 	workingPoint = 2;
       } 
-      else if ( (CoreEnv[0] > (thresholds[2]*CoreEnv[1])) && ThrEnvOverflowT == false ) {
+      else if ( (CoreEnv[0]*bsmap[bitshift] > (thresholds[2]*CoreEnv[1])) && ThrEnvOverflowT == false ) {
 	workingPoint = 3;
       }
       else { 
diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/eFEXegAlgo.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/eFEXegAlgo.cxx
index ca3280d2656d5a91ce71665741b00ce6b3152b71..06c2a51a6bd9b22534ca1c25676b7344cb7ff8c9 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/eFEXegAlgo.cxx
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/eFEXegAlgo.cxx
@@ -202,8 +202,8 @@ void LVL1::eFEXegAlgo::getWstot(std::vector<unsigned int> & output){
     }
   }
 
-  output.push_back(numer);
   output.push_back(den);
+  output.push_back(numer);
 
 }
 
@@ -239,8 +239,8 @@ std::unique_ptr<eFEXegTOB> LVL1::eFEXegAlgo::geteFEXegTOB() {
   std::vector<unsigned int> temvector;
   getWstot(temvector);
 
-  out->setWstotNum(temvector[0]);
-  out->setWstotDen(temvector[1]);
+  out->setWstotNum(temvector[1]);
+  out->setWstotDen(temvector[0]);
   getRhad(temvector);
   out->setRhadNum(temvector[1]);
   out->setRhadDen(temvector[0] + temvector[1]);
diff --git a/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IeFEXFPGA.h b/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IeFEXFPGA.h
index e22a29464c4602f8eb51eae735fb56b015b495b7..cca69deb7e572fa80ddecb82e267cf47d3a4be06 100644
--- a/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IeFEXFPGA.h
+++ b/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IeFEXFPGA.h
@@ -39,7 +39,7 @@ Interface definition for eFEXFPGA
 
     virtual void SetTowersAndCells_SG(int [][6]) = 0;
     
-    virtual void SetIsoWP(std::vector<unsigned int> &, std::vector<unsigned int> &, unsigned int &) = 0;
+    virtual void SetIsoWP(std::vector<unsigned int> &, std::vector<unsigned int> &, unsigned int &, unsigned int &) = 0;
 
     virtual std::vector<uint32_t> getEmTOBs() = 0; 
 
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
index 59d441b655466015b3dfe4ac443f2dccd4fda548..9cdccab16e73abf03ed215ca31a9dd8ffb56be14 100644
--- a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
+++ b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
@@ -3335,7 +3335,17 @@ HLT_e300_etcut_L1EM22VHI:
     2: 1
     3: 1
 HLT_e300_etcut_L1eEM22M:
-  eventCount: 0
+  eventCount: 1
+  stepCounts:
+    0: 1
+    1: 1
+    2: 1
+    3: 1
+  stepFeatures:
+    0: 1
+    1: 13
+    2: 1
+    3: 1
 HLT_e30_lhvloose_L1EM22VHI:
   eventCount: 5
   stepCounts:
@@ -9684,27 +9694,27 @@ HLT_noalg_L1cTAU20M:
 HLT_noalg_L1cTAU25M:
   eventCount: 0
 HLT_noalg_L1eEM10L:
-  eventCount: 0
+  eventCount: 7
 HLT_noalg_L1eEM15:
   eventCount: 16
 HLT_noalg_L1eEM15L:
-  eventCount: 0
+  eventCount: 6
 HLT_noalg_L1eEM15M:
-  eventCount: 0
+  eventCount: 1
 HLT_noalg_L1eEM20:
   eventCount: 14
 HLT_noalg_L1eEM20L:
-  eventCount: 0
+  eventCount: 6
 HLT_noalg_L1eEM20M:
-  eventCount: 0
+  eventCount: 1
 HLT_noalg_L1eEM22:
   eventCount: 14
 HLT_noalg_L1eEM22L:
-  eventCount: 0
+  eventCount: 5
 HLT_noalg_L1eEM22M:
-  eventCount: 0
+  eventCount: 1
 HLT_noalg_L1eEM22T:
-  eventCount: 0
+  eventCount: 1
 HLT_noalg_L1eEM3:
   eventCount: 20
 HLT_noalg_L1eEM5:
@@ -9712,9 +9722,9 @@ HLT_noalg_L1eEM5:
 HLT_noalg_L1eEM8:
   eventCount: 18
 HLT_noalg_L1eEM8L:
-  eventCount: 0
+  eventCount: 7
 HLT_noalg_L1eEM8M:
-  eventCount: 0
+  eventCount: 1
 HLT_noalg_L1eTAU100:
   eventCount: 0
 HLT_noalg_L1eTAU12:
diff --git a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref
index 08f501b6807f63993ff3b733c1903d7cf8a5a256..679805d1ced40ee757ab54b22255fdc0a5b60cb6 100644
--- a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref
+++ b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref
@@ -3862,23 +3862,23 @@ HLT_noalg_L1cTAU20M:
 HLT_noalg_L1cTAU25M:
   eventCount: 0
 HLT_noalg_L1eEM10L:
-  eventCount: 0
+  eventCount: 2
 HLT_noalg_L1eEM15:
   eventCount: 11
 HLT_noalg_L1eEM15L:
-  eventCount: 0
+  eventCount: 1
 HLT_noalg_L1eEM15M:
   eventCount: 0
 HLT_noalg_L1eEM20:
   eventCount: 7
 HLT_noalg_L1eEM20L:
-  eventCount: 0
+  eventCount: 1
 HLT_noalg_L1eEM20M:
   eventCount: 0
 HLT_noalg_L1eEM22:
   eventCount: 7
 HLT_noalg_L1eEM22L:
-  eventCount: 0
+  eventCount: 1
 HLT_noalg_L1eEM22M:
   eventCount: 0
 HLT_noalg_L1eEM22T:
@@ -3890,7 +3890,7 @@ HLT_noalg_L1eEM5:
 HLT_noalg_L1eEM8:
   eventCount: 23
 HLT_noalg_L1eEM8L:
-  eventCount: 0
+  eventCount: 3
 HLT_noalg_L1eEM8M:
   eventCount: 0
 HLT_noalg_L1eTAU100: