Index: /drsdaq/DAQReadout.cc
===================================================================
--- /drsdaq/DAQReadout.cc	(revision 192)
+++ /drsdaq/DAQReadout.cc	(revision 193)
@@ -241,21 +241,11 @@
   else snprintf(RHeader->Description,sizeof(RHeader->Description),"DUMMY");
 
-  // Determine new run number using the file given by RUN_NUM_FILE
-  FILE *RunNumFile = fopen(RUN_NUM_FILE,"r+");
-  if(RunNumFile == NULL) {
-    PrintMessage("Error: Could not open file '%s' that contains the last run number (%s)\n",RUN_NUM_FILE,strerror(errno));
+  // Request new run number
+  DimRpcInfo RunNumRPC((char *) "NextRunNumber", -1);
+  RunNumRPC.setData((char *) "");
+  RunNumber = RunNumRPC.getInt();
+  if(RunNumber < 1) {
+    PrintMessage("Error: No connection to run number dispatcher or received number smaller than 1\n");
     return;
-  }
-  if(fscanf(RunNumFile,"%u", &RunNumber) != 1 ) {
-    PrintMessage("Error: Could not read run number from file '%s'\n",RUN_NUM_FILE);
-    fclose(RunNumFile);
-    return;
-  }
-  RunNumber++;
-  rewind(RunNumFile);
-  if((fprintf(RunNumFile,"%.8u   ",RunNumber) < 0) || (fclose(RunNumFile)!=0)) {
-    PrintMessage("Error: Could not write to or close run number file '%s'\n",RUN_NUM_FILE);
-    PrintMessage("*** This is a serious error because run numbers will get mixed. Fix it. DAQ will terminate.\n");
-    throw;
   }
 
@@ -804,11 +794,10 @@
 // Transfer amplitude-calibrated waveforms to memory
 void DAQReadout::ReadCalibratedDRSData() {
-
+ 
   for (int i=FirstBoard; i<=LastBoard; i++) {
     GetBoard(i)->TransferWaves(GetBoard(i)->GetNumberOfChannels()*GetBoard(i)->GetNumberOfChips()); 
-
+	
     for (int k=0; k<GetBoard(i)->GetNumberOfChips(); k++) {
 	  TriggerCell[i][k] = GetBoard(i)->GetTriggerCell(k);
-
 	  for (int j=0; j<GetBoard(i)->GetNumberOfChannels(); j++) {
         GetBoard(i)->GetWave(k, j, WaveForm[i][k][j], true, TriggerCell[i][k]);
Index: /drsdaq/DAQReadout.h
===================================================================
--- /drsdaq/DAQReadout.h	(revision 192)
+++ /drsdaq/DAQReadout.h	(revision 193)
@@ -19,6 +19,4 @@
 #include "DRS.h"
 #include "HVFeedback.h"
-
-#define RUN_NUM_FILE "/home/ogrimm/Data/LastRunNumber"
 
 #define MAX_PATH 256		// also used for filename length
@@ -84,5 +82,6 @@
     unsigned int NumEvents;		// Number of event taken            
     unsigned int NumEventsRequested;	// Number of events requested
-    unsigned int RunNumber, FileNumber; 
+    int RunNumber; 
+    unsigned int FileNumber; 
     char FileName[MAX_PATH];
     char Prompt[MAX_COM_SIZE];
Index: /drsdaq/HVFeedback.cc
===================================================================
--- /drsdaq/HVFeedback.cc	(revision 192)
+++ /drsdaq/HVFeedback.cc	(revision 193)
@@ -110,7 +110,8 @@
   int i,j,k,q;
   float Correction, Integral;
-  
+
   // Check for LED trigger channel on given channel and if feedback running
-  if (FBMode==FB_Off || m->WaveForm[fLedTrigBoard][fLedTrigChip][fLedTrigChannel][(fLedTrigSample+m->TriggerCell[fLedTrigBoard][fLedTrigChip])%kNumberOfBins] < fLedTrigThreshold) {
+  //if (FBMode==FB_Off || m->WaveForm[fLedTrigBoard][fLedTrigChip][fLedTrigChannel][(fLedTrigSample+m->TriggerCell[fLedTrigBoard][fLedTrigChip])%kNumberOfBins] < fLedTrigThreshold) {
+  if (FBMode==FB_Off || m->WaveForm[fLedTrigBoard][fLedTrigChip][fLedTrigChannel][fLedTrigSample] < fLedTrigThreshold) {
     return false;
   }
@@ -121,5 +122,5 @@
 	  for (k=0; k<fNumberOfChannels; k++) {
 		for (Integral=0, q=-fIntHalfWidth; q<=(int) fIntHalfWidth; q++) { 
-          Integral += (m->WaveForm[i][j][k][(fLedSignalSample+q+m->TriggerCell[i][j])%kNumberOfBins] - m->WaveForm[i][j][k][(fLedBaselineSample+q+m->TriggerCell[i][j])%kNumberOfBins])*m->GetBoard(i)->GetPrecision();
+          Integral += (m->WaveForm[i][j][k][fLedSignalSample+q] - m->WaveForm[i][j][k][fLedBaselineSample+q])*m->GetBoard(i)->GetPrecision();
 		}
         Integral /= 2*fIntHalfWidth+1;
