diff --git a/Processes/ParticleCut/ParticleCut.cc b/Processes/ParticleCut/ParticleCut.cc
index 5bf4e64101613d431b7482dd7379eef7d73d7587..1616f6248740d7b8e6f23a8c31405f57fff16eb8 100644
--- a/Processes/ParticleCut/ParticleCut.cc
+++ b/Processes/ParticleCut/ParticleCut.cc
@@ -27,9 +27,9 @@ namespace corsika::process {
       if (vP.GetPID() == particles::Code::Nucleus) {
         // calculate energy per nucleon
         auto const ElabNuc = energyLab / vP.GetNuclearA();
-        return (ElabNuc < fECut);
+        return (ElabNuc <= fECut);
       } else {
-        return (energyLab < fECut);
+        return (energyLab <= fECut);
       }
     }
 
@@ -65,15 +65,15 @@ namespace corsika::process {
       C8LOG_DEBUG(fmt::format("ParticleCut: checking {}, E= {} GeV, EcutTot={} GeV", pid,
                               energy / 1_GeV,
                               (fEmEnergy + fInvEnergy + fEnergy) / 1_GeV));
-      if (bCutEm &&ParticleIsEmParticle(pid)) {
+      if (bCutEm && ParticleIsEmParticle(pid)) {
         C8LOG_DEBUG("removing em. particle...");
         fEmEnergy += energy;
-        fEmCount += 1;
+        uiEmCount += 1;
         return true;
       } else if (bCutInv && ParticleIsInvisible(pid)) {
         C8LOG_DEBUG("removing inv. particle...");
         fInvEnergy += energy;
-        fInvCount += 1;
+        uiInvCount += 1;
         return true;
       } else if (ParticleIsBelowEnergyCut(particle)) {
         C8LOG_DEBUG("removing low en. particle...");
@@ -99,7 +99,9 @@ namespace corsika::process {
       return EProcessReturn::eOk;
     }
 
-    process::EProcessReturn ParticleCut::DoContinuous(Particle& particle, Track const&) {
+    process::EProcessReturn ParticleCut::DoContinuous(
+        corsika::setup::Stack::ParticleType& particle,
+        corsika::setup::Trajectory const&) {
       C8LOG_TRACE("ParticleCut::DoContinuous");
       if (checkCutParticle(particle)) {
         C8LOG_TRACE("removing during continuous");
@@ -114,20 +116,18 @@ namespace corsika::process {
         , bCutInv(inv) {
       fEmEnergy = 0_GeV;
       uiEmCount = 0;
-      finvEnergy = 0_GeV;
+      fInvEnergy = 0_GeV;
       uiInvCount = 0;
       fEnergy = 0_GeV;
     }
 
-    void ParticleCut::ShowResults() {
+    void ParticleCut::ShowResults() const {
       C8LOG_INFO(fmt::format(
           " ******************************\n"
           " ParticleCut: \n"
-          if (bCutEm)
-              " energy in em.  component (GeV):  {}\n"
+          " energy in em.  component (GeV):  {}\n"
           " no. of em.  particles injected:  {}\n"
-          if (bCutInv)
-              " energy in inv. component (GeV):  {}\n"
+          " energy in inv. component (GeV):  {}\n"
           " no. of inv. particles injected:  {}\n"
           " energy below particle cut (GeV): {}\n"
           " ******************************",
diff --git a/Processes/ParticleCut/ParticleCut.h b/Processes/ParticleCut/ParticleCut.h
index 21a6181f0da6caf1171caeca2ea3af0d1ce16204..57315bf4ec36c73a9aecbde0245d65cbde702dfb 100644
--- a/Processes/ParticleCut/ParticleCut.h
+++ b/Processes/ParticleCut/ParticleCut.h
@@ -19,7 +19,7 @@ namespace corsika::process {
     class ParticleCut : public process::SecondariesProcess<ParticleCut>,
                         public corsika::process::ContinuousProcess<ParticleCut> {
 
-      units::si::HEPEnergyType const fECut_;
+      units::si::HEPEnergyType const fECut;
       bool bCutEm;
       bool bCutInv;
 
@@ -34,14 +34,24 @@ namespace corsika::process {
 
       EProcessReturn DoSecondaries(corsika::setup::StackView&);
 
-      EProcessReturn DoContinuous(Particle& vParticle, Track const& vTrajectory);
+      EProcessReturn DoContinuous(corsika::setup::Stack::ParticleType& vParticle,
+                                  corsika::setup::Trajectory const& vTrajectory);
 
       corsika::units::si::LengthType MaxStepLength(
           corsika::setup::Stack::ParticleType const&, corsika::setup::Trajectory const&) {
         return units::si::meter * std::numeric_limits<double>::infinity();
       }
 
-      void ShowResults();
+
+      units::si::HEPEnergyType GetECut() const { return fECut; }
+      units::si::HEPEnergyType GetInvEnergy() const { return fInvEnergy; }
+      units::si::HEPEnergyType GetCutEnergy() const { return fEnergy; }
+      units::si::HEPEnergyType GetEmEnergy() const { return fEmEnergy; }
+      unsigned int GetNumberEmParticles() const { return uiEmCount; }
+      unsigned int GetNumberInvParticles() const { return uiInvCount; }
+
+      void ShowResults() const;
+      void Reset();
 
     protected:
       template <typename TParticle>
@@ -51,16 +61,9 @@ namespace corsika::process {
       bool ParticleIsBelowEnergyCut(TParticle const&) const;
 
       bool ParticleIsEmParticle(particles::Code) const;
+      bool ParticleIsInvisible(particles::Code) const;
 
-      void ShowResults() const;
-      void Reset();
 
-      units::si::HEPEnergyType GetECut() const { return fECut; }
-      units::si::HEPEnergyType GetInvEnergy() const { return fInvEnergy; }
-      units::si::HEPEnergyType GetCutEnergy() const { return fEnergy; }
-      units::si::HEPEnergyType GetEmEnergy() const { return fEmEnergy; }
-      unsigned int GetNumberEmParticles() const { return uiEmCount; }
-      unsigned int GetNumberInvParticles() const { return fInvCount; }
     };
   } // namespace particle_cut
 } // namespace corsika::process
diff --git a/Processes/Proposal/ContinuousProcess.cc b/Processes/Proposal/ContinuousProcess.cc
index fbc5dba475110ee89145eded9d102b2c577e4133..59ec7e87f56d92cc4433abf090d838ccd24fc6c7 100644
--- a/Processes/Proposal/ContinuousProcess.cc
+++ b/Processes/Proposal/ContinuousProcess.cc
@@ -114,7 +114,6 @@ namespace corsika::process::proposal {
       vP.SetMomentum(vP.GetMomentum() * vP.GetEnergy() / vP.GetMomentum().GetNorm());
       return process::EProcessReturn::eParticleAbsorbed;
     }
-
     if (final_energy <= emCut_) {
       vP.SetEnergy(emCut_);
       vP.SetMomentum(vP.GetMomentum() * vP.GetEnergy() / vP.GetMomentum().GetNorm());