diff --git a/DDG4/plugins/Geant4TCUserParticleHandler.cpp b/DDG4/plugins/Geant4TCUserParticleHandler.cpp
index 3648f289259faf4089b920c5145ee8187fdae66d..c70ae55d2456e468260eacee03c45f9e58960d4f 100644
--- a/DDG4/plugins/Geant4TCUserParticleHandler.cpp
+++ b/DDG4/plugins/Geant4TCUserParticleHandler.cpp
@@ -87,7 +87,7 @@ Geant4TCUserParticleHandler::Geant4TCUserParticleHandler(Geant4Context* ctxt, co
 }
 
 /// Post-track action callback
-void Geant4TCUserParticleHandler::end(const G4Track* track, Particle& p)  {
+void Geant4TCUserParticleHandler::end(const G4Track* /* track */, Particle& p)  {
 
   double r_prod = std::sqrt(p.vsx*p.vsx + p.vsy*p.vsy);
   double z_prod = std::fabs(p.vsz);
@@ -121,17 +121,6 @@ void Geant4TCUserParticleHandler::end(const G4Track* track, Particle& p)  {
     simStatus.set(G4PARTICLE_SIM_DECAY_TRACKER);
   }
 
-  const G4Step* theLastStep = track->GetStep();
-  G4StepPoint* theLastPostStepPoint = NULL;
-  if(theLastStep) theLastPostStepPoint = theLastStep->GetPostStepPoint();
-  if( theLastPostStepPoint &&
-      ( theLastPostStepPoint->GetStepStatus() == fWorldBoundary //particle left world volume
-	//|| theLastPostStepPoint->GetStepStatus() == fGeomBoundary
-      )
-    ) {
-    simStatus.set(G4PARTICLE_SIM_LEFT_DETECTOR);
-  }
-
   // if the particle doesn't end in the tracker volume it must have ended in the calorimeter
   if( not ends_in_trk_vol && not simStatus.isSet(G4PARTICLE_SIM_LEFT_DETECTOR) ) {
     simStatus.set(G4PARTICLE_SIM_DECAY_CALO);
@@ -141,9 +130,6 @@ void Geant4TCUserParticleHandler::end(const G4Track* track, Particle& p)  {
     simStatus.set(G4PARTICLE_SIM_BACKSCATTER);
   }
 
-  if(track->GetKineticEnergy() <= 0.) {
-    simStatus.set(G4PARTICLE_SIM_STOPPED);
-  }
   return ;
 
 }
diff --git a/DDG4/src/Geant4ParticleHandler.cpp b/DDG4/src/Geant4ParticleHandler.cpp
index bf43b9139c6b31287ba5e3f1d0b9b26d789d6b03..cc275aca49536b3cec68305658096166f74f113e 100644
--- a/DDG4/src/Geant4ParticleHandler.cpp
+++ b/DDG4/src/Geant4ParticleHandler.cpp
@@ -307,6 +307,26 @@ void Geant4ParticleHandler::end(const G4Track* track)   {
   ph->vey = p.y();
   ph->vez = p.z();
 
+
+  // Set the simulator status bits
+  PropertyMask simStatus(m_currTrack.status);
+
+  // check if the last step ended on the worldVolume boundary
+  const G4Step* theLastStep = track->GetStep();
+  G4StepPoint* theLastPostStepPoint = NULL;
+  if(theLastStep) theLastPostStepPoint = theLastStep->GetPostStepPoint();
+  if( theLastPostStepPoint &&
+      ( theLastPostStepPoint->GetStepStatus() == fWorldBoundary //particle left world volume
+	//|| theLastPostStepPoint->GetStepStatus() == fGeomBoundary
+      )
+    ) {
+    simStatus.set(G4PARTICLE_SIM_LEFT_DETECTOR);
+  }
+
+  if(track->GetKineticEnergy() <= 0.) {
+    simStatus.set(G4PARTICLE_SIM_STOPPED);
+  }
+
   /// Final update of the particle using the user handler
   if ( m_userHandler )  {
     m_userHandler->end(track, m_currTrack);