diff --git a/src/THcTimeSyncEvtHandler.cxx b/src/THcTimeSyncEvtHandler.cxx
index f94ba4972e77e20e91d03e9a3ec60c03efe3a86c..3e72cc1c031e6dc5daad41348e760b80f315654c 100644
--- a/src/THcTimeSyncEvtHandler.cxx
+++ b/src/THcTimeSyncEvtHandler.cxx
@@ -168,9 +168,12 @@ Int_t THcTimeSyncEvtHandler::Analyze(THaEvData *evdata)
 	  if(fSlippage) {
 	    pslippedbank = p-2;
 	    //	    cout << banklen << " " << pslippedbank[0] << endl;
+	    if(AllTdcsPresent(pslippedbank) && (banklen > fBadSyncSizeTrigger)) {
+	      cout << "Slippage detected at event " << evdata->GetEvNum() << " with size " << banklen << " but not corrected" << endl;
+	    }
 	  } else {
-	    if(banklen > fBadSyncSizeTrigger) {
-	      cout << "Slippage enabled at event " << evdata->GetEvNum() << endl;
+	    if(AllTdcsPresent(p-2) && (banklen > fBadSyncSizeTrigger)) {
+	      cout << "Slippage enabled at event " << evdata->GetEvNum() << " with size " << banklen << endl;
 	      fSlippage = 1;
 	    }
 	  }
@@ -502,6 +505,7 @@ THaAnalysisObject::EStatus THcTimeSyncEvtHandler::Init(const TDatime& date)
   }
 
   fFirstTime = kTRUE;
+  fFirstTdcCheck = kTRUE;
   fMasterRoc = -1;
   fNEvents = 0;
   CrateTimeMap.clear();
@@ -544,6 +548,48 @@ Int_t THcTimeSyncEvtHandler::SetRewriteFile(const char *filename) {
   }
   return(0);
 }
+Int_t THcTimeSyncEvtHandler::AllTdcsPresent(UInt_t *bank) {
+  /**
+     Check that all the 1190 TDCs that should be present are there.
+
+     Return codes:
+       0: All TDCs present
+       1: TDCs missing at high end of crate
+       2: TDCs missing at low end of crate
+       3: Other arrangement of missing 
+  */
+  UInt_t headermask=0;
+  UInt_t trailermask=0;
+
+  UInt_t *p=bank;
+  Int_t banklen = *p;
+  p++;			// Header word
+  while(p++ < bank+banklen) {
+    if((*p & 0xf8000000) == 0x40000000) {
+      headermask |= (1<<(*p&0x1f));
+    } else if ((*p & 0xf8000000) == 0x80000000) {
+      trailermask |= (1<<(*p&0x1f));
+    }
+  }
 
-
+  if(fFirstTdcCheck) {
+    fFirstTdcCheck=kFALSE;
+    fTdcMask = headermask | trailermask;
+    return(0);			// All TDC present by definition
+  } else {
+    if((fTdcMask == headermask) && (fTdcMask == trailermask)) {
+      return(0);
+    } else {
+      cout << hex << "Header mask " << headermask << "  Trailer mask " << trailermask << dec << endl;
+      cout << "TDC1190 Bank" << endl;
+      for(Int_t i=0;i<=banklen;i++) {
+	if(i%5 == 0) cout<<endl<<dec<<i<<": ";
+	cout << hex << setw(10) << bank[i];
+      }
+      cout << dec << endl;
+      return(1);		// Just return this for now
+    }
+  }
+}
+  
 ClassImp(THcTimeSyncEvtHandler)
diff --git a/src/THcTimeSyncEvtHandler.h b/src/THcTimeSyncEvtHandler.h
index 53b388012e3b7868025d80d08df0124ef4c654a6..ff1e849512e0a180a726e6e4d6a77f63b12f9975 100644
--- a/src/THcTimeSyncEvtHandler.h
+++ b/src/THcTimeSyncEvtHandler.h
@@ -33,7 +33,7 @@ public:
   virtual void SetBadROC(Int_t roc) {fBadROC = roc;}
   virtual void SetResync(Bool_t b) {fResync = b;}
   virtual void SetBadSyncSizeTrigger(Int_t sizetrigger) {fBadSyncSizeTrigger = sizetrigger;}
-
+  virtual Int_t AllTdcsPresent(UInt_t *bank);
 private:
 
   virtual void InitStats();
@@ -51,6 +51,8 @@ private:
   Bool_t fResync;		// If true, stop correcting events on sync
   Int_t fBadSyncSizeTrigger;
   Bool_t fLastEventWasSync;	// True when last event was sync event
+  Bool_t fFirstTdcCheck;
+  UInt_t fTdcMask;		  // Bit Pattern of TDC in ROC being checked
 
   Decoder::THaCodaFile* fCodaOut; // The CODA output file
   Int_t handle;