Hi @dale

I have the exit condition here (line 118):

```
else if((possible && intersects.Count > 0) || !possible)
run = false; //if no intersection exit loop
}
```

I use the boolean possible to check if intersection in one direction is possible

`bool possible = Possible(crv, pln, dist);`

First I test for below the plane, then above the plane

by commenting out the while loop and printing out the possible boolean

with the internalised values I get :

False (for below)

True (for above)

For intersections below the plane

`possible = false`

, so in the while loop, if there’s no intersections the `!possible`

portion of the exit condition would be `true`

, which then sets run to be false

For intersections above the plane

`possible = true`

, so since either/both start/end point of the curve is above the plane, there should be at least one intersection, the plane will continously move up in each iteration:

`pln.Origin = pln.Origin + (pln.Normal * dist);`

at which point when an intersection happens, `intersects.Count > 0`

so after the intersection, if there’s a step when there’s no intersection

`possible = true`

and `intersects.Count > 0`

makes `(possible && intersects.Count > 0) = true`

which allows for the exit `run = false`

I don’t think my logic is wrong? or maybe I’m misunderstanding something?

thanks,

Victor