# Continuous Callback - terminate on second zero crossing?

**URL:** https://discourse.julialang.org/t/continuous-callback-terminate-on-second-zero-crossing/95561
**Category:** General Usage
**Tags:** differentialequation
**Created:** [March 4, 2023, 11:50pm UTC](https://discourse.julialang.org/t/continuous-callback-terminate-on-second-zero-crossing/95561 "2023-03-04T23:50:57Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![pluie](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pluie/32/35949_2.png) [@pluie](https://discourse.julialang.org/u/pluie)
#### Post date: [March 4, 2023, 11:50pm UTC](https://discourse.julialang.org/t/continuous-callback-terminate-on-second-zero-crossing/95561/1 "2023-03-04T23:50:57Z")

</div>

How do I set up the condition and affect functions such that ODE solver terminates on second zero crossing?

Currently, I have the following setup for terminating on the first zero crossing.

```julia
function condition(z,t,integrator)
    z[2]
end

function affect!(integrator)
    terminate!(integrator)
end

cb = ContinuousCallback(condition,affect!) 
 prob = ODEProblem(EOM,ic,tspan,p)

```

---

<div class="post-metadata">

### Author: ![Oscar\_Smith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oscar_smith/32/25343_2.png) [@Oscar\_Smith](https://discourse.julialang.org/u/Oscar_Smith)
#### Post date: [March 5, 2023, 12:31am UTC](https://discourse.julialang.org/t/continuous-callback-terminate-on-second-zero-crossing/95561/2 "2023-03-05T00:31:26Z")

</div>

The easiest way would be something like

```julia
NUM_TIMES_EFFECT_HIT::Int = 0
function affect!(integrator)
    if NUM_TIMES_EFFECT_HIT < 2
       NUM_TIMES_EFFECT_HIT += 1 
    else
        terminate!(integrator)
    end
end
```
