psol = ParametricNDSolveValue[
{x'[t] == y[t], y'[t] == -1.5 (x[t]^2 - 1) y[t] - x[t], x[0] == x0,
y[0] == y0,
WhenEvent[y[t] < 0 && t > 0.001, "StopIntegration"]}, {x, y},
{t, 0, 20}, {x0, y0}];
NestWhile[
psol @@ Last /@ Through[#["ValuesOnGrid"]] &,
psol[0.5, 0.],
With[{p1 = foo = Last /@ Through[#1["ValuesOnGrid"]],
p2 = Last /@ Through[#2["ValuesOnGrid"]]},
EuclideanDistance[p1, p2]/Norm[p2] > 2 $MachineEpsilon] &,
2, 1000]