diff --git a/src/THcBCMCurrent.cxx b/src/THcBCMCurrent.cxx
index b0558a25e647bfaea32a884ea262cf4bae63d3b2..a65a41f4edc8cea03c2d7122c62ce4993242bf2c 100644
--- a/src/THcBCMCurrent.cxx
+++ b/src/THcBCMCurrent.cxx
@@ -21,11 +21,10 @@ using namespace std;
 
 THcBCMCurrent::THcBCMCurrent(const char* name,
 			     const char* description) :
-  THaPhysicsModule(name, description), fThreshold(0)
+  THaPhysicsModule(name, description)
 {
 
-  fBCM1flag = 0;
-  fBCM2flag = 0;
+  fBCMflag = 0;
 
   fBCM1avg  = 0;
   fBCM2avg  = 0;
@@ -68,20 +67,14 @@ Int_t THcBCMCurrent::ReadDatabase( const TDatime& date )
 {
   
   DBRequest list1[] = {
-    {"num_scal_reads", &fNscaler, kInt},
+    {"num_scal_reads",               &fNscaler,   kInt},
+    {"gBCM_Current_threshold",       &fThreshold, kDouble}, 
+    {"gBCM_Current_threshold_index", &fBCMIndex,  kInt}, 
     {0}
   };
+
   gHcParms->LoadParmValues((DBRequest*)&list1);
   
-  if(fThreshold < 1.e-5)
-    {
-      DBRequest list2[] = {
-	{"gBCM_Current_threshold", &fThreshold, kDouble}, 
-	{0}
-      };
-      gHcParms->LoadParmValues((DBRequest*)&list2);  
-    }  
-  
   fiBCM1     = new Double_t[fNscaler];
   fiBCM2     = new Double_t[fNscaler];
   fiBCM4a    = new Double_t[fNscaler];
@@ -90,7 +83,7 @@ Int_t THcBCMCurrent::ReadDatabase( const TDatime& date )
 
   fEvtNum    = new Int_t[fNscaler];
 
-  DBRequest list3[] = {
+  DBRequest list2[] = {
     {"scal_read_bcm1_current",  fiBCM1,     kDouble, (UInt_t) fNscaler},
     {"scal_read_bcm2_current",  fiBCM2,     kDouble, (UInt_t) fNscaler},
     {"scal_read_bcm4a_current", fiBCM4a,    kDouble, (UInt_t) fNscaler},
@@ -100,7 +93,7 @@ Int_t THcBCMCurrent::ReadDatabase( const TDatime& date )
     {0}
   };
 
-  gHcParms->LoadParmValues((DBRequest*)&list3);
+  gHcParms->LoadParmValues((DBRequest*)&list2);
 
   BCMInfo binfo;
   for(int i=0; i<fNscaler; i++)
@@ -127,13 +120,12 @@ Int_t THcBCMCurrent::DefineVariables( EMode mode )
   fIsSetup = ( mode == kDefine );
 
   RVarDef vars[] = {
-    {"bcm1.currentflag", "BCM1 current flag for good event", "fBCM1flag"},
-    {"bcm2.currentflag", "BCM2 current flag for good event", "fBCM2flag"},
-    {"bcm1.AvgCurrent",  "BCM1  average beam current", "fBCM1avg"},
-    {"bcm2.AvgCurrent",  "BCM2  average beam current", "fBCM2avg"},
-    {"bcm4a.AvgCurrent", "BCM4a average beam current", "fBCM4aavg"},
-    {"bcm4b.AvgCurrent", "BCM4b average beam current", "fBCM4bavg"},
-    {"bcm17.AvgCurrent", "BCM17 average beam current", "fBCM17avg"},
+    {"CurrentFlag",      "BCM current flag for good event", "fBCMflag"},
+    {"bcm1.AvgCurrent",  "BCM1  average beam current",      "fBCM1avg"},
+    {"bcm2.AvgCurrent",  "BCM2  average beam current",      "fBCM2avg"},
+    {"bcm4a.AvgCurrent", "BCM4a average beam current",      "fBCM4aavg"},
+    {"bcm4b.AvgCurrent", "BCM4b average beam current",      "fBCM4bavg"},
+    {"bcm17.AvgCurrent", "BCM17 average beam current",      "fBCM17avg"},
     { 0 }
   };
 
@@ -170,15 +162,27 @@ Int_t THcBCMCurrent::Process( const THaEvData& evdata )
       fBCM17avg = binfo.bcm17_current;
     }
 
-  if(fBCM1avg < fThreshold)
-    fBCM1flag = 0;
-  else
-    fBCM1flag = 1;
-
-  if(fBCM2avg < fThreshold)
-    fBCM2flag = 0;
-  else
-    fBCM2flag = 1;
+  switch (fBCMIndex) 
+    {
+    case BCM1 :
+      fBCMflag = ( fBCM1avg < fThreshold )?0:1;
+      break;
+    case BCM2:
+      fBCMflag = ( fBCM2avg < fThreshold )?0:1;
+      break;
+    case BCM4A:
+      fBCMflag = ( fBCM4aavg < fThreshold )?0:1;
+      break;
+    case BCM4B:
+      fBCMflag = ( fBCM4bavg < fThreshold )?0:1;
+      break;
+    case BCM17:
+      fBCMflag = ( fBCM17avg < fThreshold )?0:1;
+      break;
+    default:
+      fBCMflag = 0;
+      break;
+    }
 
   return kOK;
 
diff --git a/src/THcBCMCurrent.h b/src/THcBCMCurrent.h
index 4357a30441c233e5bcdb15d48d7f14517c744ad3..ef70a0c1f6f88cdc9c6612e6c3fb3d75767dbe0a 100644
--- a/src/THcBCMCurrent.h
+++ b/src/THcBCMCurrent.h
@@ -19,12 +19,13 @@ class THcBCMCurrent : public THaPhysicsModule {
   virtual EStatus Init( const TDatime& date);
   virtual Int_t Process( const THaEvData& );  
 
-  void SetCurrentCut(Double_t _threshold){ fThreshold = _threshold; }
+  enum BCMopt {BCM1, BCM2, UNSER, BCM4A, BCM4B, BCM17};
 
  private:
   
   Int_t     fNscaler;
   Double_t  fThreshold;
+  Int_t     fBCMIndex;
   Double_t* fiBCM1;
   Double_t* fiBCM2;
   Double_t* fiBCM4a;
@@ -32,8 +33,7 @@ class THcBCMCurrent : public THaPhysicsModule {
   Double_t* fiBCM17;
   Int_t*    fEvtNum;
 
-  Int_t    fBCM1flag;
-  Int_t    fBCM2flag;
+  Int_t    fBCMflag;
 
   Double_t fBCM1avg;
   Double_t fBCM2avg;
@@ -49,13 +49,12 @@ class THcBCMCurrent : public THaPhysicsModule {
     Double_t bcm17_current;
   };
 
+  std::map<Int_t, BCMInfo> BCMInfoMap;
+
   Int_t GetAvgCurrent( Int_t fevn, BCMInfo &bcminfo );
   virtual Int_t ReadDatabase( const TDatime& date);
   virtual Int_t DefineVariables( EMode mode = kDefine );
 
-
-  std::map<Int_t, BCMInfo> BCMInfoMap;
-
   ClassDef(THcBCMCurrent, 0)
 
 };