Yeah, don’t cast your values to integers; it’ll clamp the values. If you need to clamp “index” to an integer, you can either:
int index = (int)(Time.time * framesPerSecond);
or
int index = (int)Math.Round(Time.time * framesPerSecond)
The difference is that the first example will always floor the value (e.g., 0.99 will turn into 0) whereas the second will properly round it (0.99 will turn into 1)
If you want to keep it as a decimal number, use oxl’s solution.