I posted on the forum, but after doing some more digging I'm more and more convinced this is a bug.
mlt chops off the last frame of a clip @24fps. I think it has to do with not rounding decimals up on the conversion from milliseconds to frames. On 25fps material everything works just fine.
I noticed because I'm trying to create a play-out application for a work in progress film using daily renders of the shots. All Shots are rendered out in exact length so when they all come out one frame short in mlt everything gets offset and more and more wrong.
Here is an example of how I came to my conclusion:
I know my material is 188 frames long
Frame rate: 24
Duration from ffprobe: 00:00:07.83
1 frame in milliseconds = 1 / 24 = 0.041666667
188 * 0.041666667 = 7.833333396 (which confirms ffprobe's duration)
If we break the duration in frames down like this:
7 * 24 = 168
0.83 / 0.041666667 = 19.919999841
this gives us duration of:
168 + 19 = 187
Where does the 0.919999841 go?
Shouldn't there be a rounding upwards here?