diff --git a/PwaDynamics/FVector.cc b/PwaDynamics/FVector.cc
index a908535c0474d8d6b6a033478d105aa534e5e11a..15b03ca226910bf7aca38f2dcea7eb5b8b97f3b1 100644
--- a/PwaDynamics/FVector.cc
+++ b/PwaDynamics/FVector.cc
@@ -22,6 +22,7 @@
 //************************************************************************//
 
 #include "PwaDynamics/FVector.hh"
+#include "ErrLogger/ErrLogger.hh"
 //#include "qft++/relativistic-quantum-mechanics/Utils.hh"
 
 
@@ -88,6 +89,11 @@ complex<double> FVector::evalProjMatrix(const double mass, int index){
   for(int i=0;i<NumRows(); ++i){
     result+=denomMatrInv(index,i)*(*_Pvector)(i,0);
   }
+
+  if(result.real() != result.real()){
+    Alert << "result:\t" << result << endmsg;
+    exit(0);
+  }
   return result; 
 }
 
diff --git a/PwaDynamics/KMatrixSlowAdlerCorRel.cc b/PwaDynamics/KMatrixSlowAdlerCorRel.cc
index 4e5ef07b24c6cc7f54bf070c2880cebb5f2c1efe..9869875ac705bd57501fed66512e90b41915b10c 100644
--- a/PwaDynamics/KMatrixSlowAdlerCorRel.cc
+++ b/PwaDynamics/KMatrixSlowAdlerCorRel.cc
@@ -60,8 +60,21 @@ void KMatrixSlowAdlerCorRel::evalMatrix(const double mass){
     (*this)+= *(*it);
   }
 
-  double adlerFactor=(1.-_sAdler0)/(mass*mass-_sAdler0)*(mass*mass-_sAdler*0.1349766*0.1349766/2.);
-  double s0ScatFactor=(1.0-_s0Scat)/(mass*mass-_s0Scat);
+  double sAdler0Denom=mass*mass-_sAdler0;
+  if( fabs(sAdler0Denom)<1e-10){
+    if(sAdler0Denom<0) sAdler0Denom=-1e-10;
+    else sAdler0Denom=1e-10;
+  }
+
+ 
+  double adlerFactor=(1.-_sAdler0)/sAdler0Denom*(mass*mass-_sAdler*0.1349766*0.1349766/2.);
+
+  double s0ScatDenom=mass*mass-_s0Scat;
+  if( fabs(s0ScatDenom)<1e-10){
+    if(s0ScatDenom<0.) s0ScatDenom=-1e-10;
+    else s0ScatDenom=1e-10;
+  }
+  double s0ScatFactor=(1.0-_s0Scat)/s0ScatDenom;
 
   for (int i=0; i<NumRows(); ++i){
     for (int j=0; j<NumCols(); ++j){
diff --git a/PwaDynamics/PVectorSlowCorRel.cc b/PwaDynamics/PVectorSlowCorRel.cc
index f812afa8a8696761de9ddfdc1baa5b653f76b0be..ecd76061bc39f34f3714becd5eec466c3a4f4792 100644
--- a/PwaDynamics/PVectorSlowCorRel.cc
+++ b/PwaDynamics/PVectorSlowCorRel.cc
@@ -47,8 +47,14 @@ void PVectorSlowCorRel::evalMatrix(const double mass){
     thePVector += *(*it);
   }
 
+  double s0prodDenom=mass*mass-_s0prod;
+  if(fabs(s0prodDenom)<1e-10){
+    if (s0prodDenom<0.) s0prodDenom=-1e-10;
+    else s0prodDenom=1e-10;
+  }
+
   for (int i=0; i<thePVector.NumRows(); ++i){  
-    this->operator()(i,0)=thePVector(i,0)+ _fProdVec[i]*(1.0-_s0prod)/(mass*mass-_s0prod);
+    this->operator()(i,0)=thePVector(i,0)+ _fProdVec[i]*(1.0-_s0prod)/s0prodDenom;
   } 
 
 }
diff --git a/PwaUtils/HeliDecAmps.cc b/PwaUtils/HeliDecAmps.cc
index c27233038d6b41da4e55feb57320e4c28bf308bd..9538145af68ce156dc8119c143ca96f19e2ce992 100644
--- a/PwaUtils/HeliDecAmps.cc
+++ b/PwaUtils/HeliDecAmps.cc
@@ -129,7 +129,7 @@ complex<double> HeliDecAmps::XdecAmp(Spin& lamX, EvtData* theData, Spin& lamFs,
   int evtNo=theData->evtNo;
 
   if ( _cacheAmps && !_recalculate){
-    result=_cachedAmpMap[evtNo][lamX][lamFs];
+    result=_cachedAmpMap.at(evtNo).at(lamX).at(lamFs);
     result*=_absDyn->eval(theData, grandmaAmp);
     if(result.real()!=result.real()) DebugMsg << "result:\t" << result << endmsg;
     return result;
@@ -148,9 +148,9 @@ complex<double> HeliDecAmps::XdecAmp(Spin& lamX, EvtData* theData, Spin& lamFs,
     if(_enabledlamFsDaughter2 && lamFs!=lambda2) continue;
 
     double theMag=it->second;
-    double thePhi=_currentParamPhiLamLams[it->first];
+    double thePhi=_currentParamPhiLamLams.at(it->first);
     complex<double> expi(cos(thePhi), sin(thePhi));
-    complex<double> amp = it->first->parityFactor*theMag*expi*conj( theData->WignerDsString[_wignerDKey][it->first->J][lamX][lambda]);
+    complex<double> amp = it->first->parityFactor*theMag*expi*conj( theData->WignerDsString.at(_wignerDKey).at(it->first->J).at(lamX).at(lambda));
     result+=amp*daughterAmp(lambda1, lambda2, theData, lamFs);
   }
 
@@ -163,7 +163,10 @@ complex<double> HeliDecAmps::XdecAmp(Spin& lamX, EvtData* theData, Spin& lamFs,
 }
 
   result*=_absDyn->eval(theData, grandmaAmp);
-  if(result.real()!=result.real()) DebugMsg << "result:\t" << result << endmsg;
+  if(result.real()!=result.real()){
+    Alert << "result:\t" << result << endmsg;
+    exit(0);
+  }
   return result;
 }
 
diff --git a/PwaUtils/LSDecAmps.cc b/PwaUtils/LSDecAmps.cc
index e2400bb075104fa629079a3bb704a350ee9c9b59..a13a29b9c42cfc3f224031363544848ba07dfb27 100644
--- a/PwaUtils/LSDecAmps.cc
+++ b/PwaUtils/LSDecAmps.cc
@@ -140,6 +140,13 @@ complex<double> LSDecAmps::XdecAmp(Spin& lamX, EvtData* theData, Spin& lamFs, Ab
   }
 
   result*=_absDyn->eval(theData, grandmaAmp);
+  if(result.real()!=result.real()){
+    Info << "dyn name: " << _absDyn->name() 
+	 << "\nname(): " << name()
+	 << endmsg;
+    Alert << "result:\t" << result << endmsg;
+    exit(0);
+  }
   return result;
 }
 
@@ -169,6 +176,10 @@ complex<double> LSDecAmps::lsLoop(Spin& lamX, EvtData* theData, Spin& lam1Min, S
     }
   }
   result*=_preFactor*_isospinCG;
+  if(result.real()!=result.real()){
+    Alert << "result:\t" << result << endmsg;
+    exit(0);
+  }
   return result;
 }