Python. How to find a point on the timeline where Fcurve reaches a certain value without changing current subframe?
Using FCurve.evaluate(frame) and numpy
In this related answer have found the minimum of an fcurve based on 0.01 subframe increments, instead here will find the first point where the fcurve is greater than a given value.
Test script, loops over all actions and prints the frame (and value) where it first exceeds value.
import bpy
import numpy as np

value = 10

frames = np.arange(1, 250, 0.01)

for action in bpy.data.actions:
    print(f&quot;{action.name}&quot;)
    
    for fc in action.fcurves:
        print(f&quot;{fc.data_path}[{fc.array_index}]&quot;)
        points = np.vectorize(fc.evaluate)(frames)

        hit = np.where(points &gt; value)[0]
        if hit.size:
            f = hit[0]

            print(f&quot;{frames[f]} : value {points[f]}&quot;)