Mathf.Lerp for integers

Unexpectedly for myself, I’m hung up on this issue.
Suppose there is an array with a length of N elements. And we need to take an element from there, but not by index, but by value t = [0…1] (from 0 to 1 both inclusive).
That is, the problem is reduced to a linear interpolation of the float value into the index of the array.

int index = (int) Mathf.Lerp(0, N, t);

But when t = 1, then index = N which is out of array’s range.

We can fix this as follows:

int index = Mathf.Clamp((int) Mathf.Lerp(0, N, t), 0, N - 1);

int index = (int) Mathf.Lerp(0, N, t - Mathf.Epsilon);

but i dont like the way it looks.

So the question is how to do this gracefully?

After our discussion in the comments, here is the formula that should work:

  // Scaling by ( 1 - Mathf.Epsilon ) prevents N to be chosen when t == 1
 int index = Mathf.FloorToInt( t * N * ( 1 - Mathf.Epsilon ) ) ;