diff --git a/src/THcAerogel.cxx b/src/THcAerogel.cxx
index 99bb5f5087fa43eeb8b63054822e98bcf033dd0e..94746cf26af17074a6cd28bf3bf9c530a6870b7c 100644
--- a/src/THcAerogel.cxx
+++ b/src/THcAerogel.cxx
@@ -519,7 +519,7 @@ void THcAerogel::Clear(Option_t* opt)
     fGoodPosAdcPulseInt.at(ielem)    = 0.0;
     fGoodPosAdcPulseIntRaw.at(ielem) = 0.0;
     fGoodPosAdcPulseAmp.at(ielem)    = 0.0;
-    fGoodPosAdcPulseTime.at(ielem)   = 0.0;
+    fGoodPosAdcPulseTime.at(ielem)   = kBig;
     fPosNpe.at(ielem)                = 0.0;
   }
   for (UInt_t ielem = 0; ielem < fGoodNegAdcPed.size(); ielem++) {
@@ -527,7 +527,7 @@ void THcAerogel::Clear(Option_t* opt)
     fGoodNegAdcPulseInt.at(ielem)    = 0.0;
     fGoodNegAdcPulseIntRaw.at(ielem) = 0.0;
     fGoodNegAdcPulseAmp.at(ielem)    = 0.0;
-    fGoodNegAdcPulseTime.at(ielem)   = 0.0;
+    fGoodNegAdcPulseTime.at(ielem)   = kBig;
     fNegNpe.at(ielem)                = 0.0;
   }
 
diff --git a/src/THcCherenkov.cxx b/src/THcCherenkov.cxx
index 4e6ecfdc3be4416ea059431dfe10b6e8d2fb289f..a639970499bfa70f2168cefe84dad4252964d48d 100644
--- a/src/THcCherenkov.cxx
+++ b/src/THcCherenkov.cxx
@@ -330,7 +330,7 @@ void THcCherenkov::Clear(Option_t* opt)
     fGoodAdcPulseInt.at(ielem)    = 0.0;
     fGoodAdcPulseIntRaw.at(ielem) = 0.0;
     fGoodAdcPulseAmp.at(ielem)    = 0.0;
-    fGoodAdcPulseTime.at(ielem)   = 0.0;
+    fGoodAdcPulseTime.at(ielem)   = kBig;
     fNpe.at(ielem)                = 0.0;
   }
 
diff --git a/src/THcRawShowerHit.cxx b/src/THcRawShowerHit.cxx
index 982266f5625260b3ffd53b37d7af5505070ace4d..1a32508ed78b6546db327c244291e68dd5f67609 100644
--- a/src/THcRawShowerHit.cxx
+++ b/src/THcRawShowerHit.cxx
@@ -83,11 +83,13 @@ void THcRawShowerHit::SetDataTimePedestalPeak(
 
 
 void THcRawShowerHit::SetReference(Int_t signal, Int_t reference) {
-  std::cerr
-    << "Warning:"
-    << " `THcRawShowerHit::SetReference`:"
-    << " ADC signal should not have reference time!"
-    << std::endl;
+  if (signal < fNAdcSignals) {
+    fAdcHits[signal].SetRefTime(reference);
+  } else {
+    throw std::out_of_range(
+      "`THcRawHodoHit::SetReference`: only signals `2` and `3` available!"
+    );
+  }
 }
 
 
diff --git a/src/THcScintillatorPlane.cxx b/src/THcScintillatorPlane.cxx
index 1625acade1e30133252737d3bba15d3cbf874e86..c74dad0f3517e12b9993137223858913910d3dc8 100644
--- a/src/THcScintillatorPlane.cxx
+++ b/src/THcScintillatorPlane.cxx
@@ -494,13 +494,13 @@ void THcScintillatorPlane::Clear( Option_t* )
     fGoodPosAdcPed.at(ielem)         = 0.0;
     fGoodPosAdcPulseInt.at(ielem)    = 0.0;
     fGoodPosAdcPulseAmp.at(ielem)    = 0.0;
-    fGoodPosAdcPulseTime.at(ielem)   = 0.0;
+    fGoodPosAdcPulseTime.at(ielem)   = kBig;
   }
   for (UInt_t ielem = 0; ielem < fGoodNegAdcPed.size(); ielem++) {
     fGoodNegAdcPed.at(ielem)         = 0.0;
     fGoodNegAdcPulseInt.at(ielem)    = 0.0;
     fGoodNegAdcPulseAmp.at(ielem)    = 0.0;
-    fGoodNegAdcPulseTime.at(ielem)   = 0.0;
+    fGoodNegAdcPulseTime.at(ielem)   = kBig;
   }
 
   //Clear Good TDC Variables
diff --git a/src/THcShowerArray.cxx b/src/THcShowerArray.cxx
index 401976d4239fb1f785b6160c43327ad61eaee11c..aca7f40565b95969aed38658cc471221ee1036d4 100644
--- a/src/THcShowerArray.cxx
+++ b/src/THcShowerArray.cxx
@@ -163,13 +163,13 @@ Int_t THcShowerArray::ReadDatabase( const TDatime& date )
   };
 
   fDebugAdc = 0;  // Set ADC debug parameter to false unless set in parameter file
-
-  gHcParms->LoadParmValues((DBRequest*)&list, prefix);
   fADCMode=kADCDynamicPedestal;
   fAdcTimeWindowMin=0;
   fAdcTimeWindowMax=10000;
   fAdcTdcOffset=0.0;
   fAdcThreshold=0.;
+
+  gHcParms->LoadParmValues((DBRequest*)&list, prefix);
   fNelem = fNRows*fNColumns;
 
   fXPos = new Double_t* [fNRows];
@@ -483,7 +483,7 @@ void THcShowerArray::Clear( Option_t* )
     fGoodAdcPed.at(ielem)              = 0.0;
     fGoodAdcPulseInt.at(ielem)         = 0.0;
     fGoodAdcPulseAmp.at(ielem)         = 0.0;
-    fGoodAdcPulseTime.at(ielem)        = 0.0;
+    fGoodAdcPulseTime.at(ielem)        = kBig;
     fNumGoodAdcHits.at(ielem)          = 0.0;
     fE.at(ielem)                       = 0.0;
   }
@@ -913,7 +913,7 @@ Int_t THcShowerArray::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
   }
 
   fEarray = 0;
-
+ 
   // Process raw hits. Get ADC hits for the plane, assign variables for each
   // channel.
 
@@ -945,7 +945,7 @@ Int_t THcShowerArray::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
       ((THcSignalHit*) frAdcPulseAmp->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPulseAmp(thit));
 
       ((THcSignalHit*) frAdcPulseTimeRaw->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPulseTimeRaw(thit));
-      ((THcSignalHit*) frAdcPulseTime->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPulseTime(thit));
+      ((THcSignalHit*) frAdcPulseTime->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPulseTime(thit)+fAdcTdcOffset);
 
       if (rawAdcHit.GetPulseAmp(thit)>0&&rawAdcHit.GetPulseIntRaw(thit)>0) {
 	((THcSignalHit*) frAdcErrorFlag->ConstructedAt(nrAdcHits))->Set(padnum,0);
diff --git a/src/THcShowerPlane.cxx b/src/THcShowerPlane.cxx
index 38903f56b12340230f08c3f669aae86e2e99db25..be73ef5afe69965234cb0013902fee935be6e70e 100644
--- a/src/THcShowerPlane.cxx
+++ b/src/THcShowerPlane.cxx
@@ -430,7 +430,7 @@ void THcShowerPlane::Clear( Option_t* )
     fGoodPosAdcPulseIntRaw.at(ielem)      = 0.0;
     fGoodPosAdcPulseInt.at(ielem)         = 0.0;
     fGoodPosAdcPulseAmp.at(ielem)         = 0.0;
-    fGoodPosAdcPulseTime.at(ielem)        = 0.0;
+    fGoodPosAdcPulseTime.at(ielem)        = kBig;
     fEpos.at(ielem)                       = 0.0;
     fNumGoodPosAdcHits.at(ielem)          = 0.0;
   }
@@ -440,7 +440,7 @@ void THcShowerPlane::Clear( Option_t* )
     fGoodNegAdcPulseIntRaw.at(ielem)      = 0.0;
     fGoodNegAdcPulseInt.at(ielem)         = 0.0;
     fGoodNegAdcPulseAmp.at(ielem)         = 0.0;
-    fGoodNegAdcPulseTime.at(ielem)        = 0.0;
+    fGoodNegAdcPulseTime.at(ielem)        = kBig;
     fEneg.at(ielem)                       = 0.0;
     fNumGoodNegAdcHits.at(ielem)          = 0.0;
   }
diff --git a/src/THcTrigRawHit.cxx b/src/THcTrigRawHit.cxx
index 60e3b60c35cf66c35d912e9c4e973700dbba774f..4d87b2eb29c3060c293ab2958190577ecf2a8ab1 100644
--- a/src/THcTrigRawHit.cxx
+++ b/src/THcTrigRawHit.cxx
@@ -217,12 +217,13 @@ void THcTrigRawHit::SetDataTimePedestalPeak(
 
 
 void THcTrigRawHit::SetReference(Int_t signal, Int_t reference) {
-  if (fNAdcSignals <= signal && signal < fNAdcSignals+fNTdcSignals) {
+  if (signal < fNAdcSignals) {
+    fAdcHits[signal].SetRefTime(reference);
+  } else if (signal < fNAdcSignals+fNTdcSignals) {
     fTdcHits[signal-fNAdcSignals].SetRefTime(reference);
-  }
-  else {
+  } else {
     throw std::out_of_range(
-      "`THcTrigRawHit::SetReference`: only signal `1` available!"
+      "`THcTrigRawHit::SetReference`: only signals `2` and `3` available!"
     );
   }
 }