While i'm certain I did not ask this question well, I have finally found the answer. The issue I was encountering was caused by the value of time being greater than the value of duration.
In the above function, you don't feed in the destination value, just the current value and the difference between the start and destination. The solution I came up with is: if execution time between calls to the easing function go beyond the maximum allowable duration value allowed for the easing to complete, then just set the start value to be equal to destination value.
time is the number of milliseconds since the easing function was initiated:
change=destination-currentposition
currentposition=inoutquart(time,currentposition,change,duration)
if time > duration then startarray[i]=destarray[i]
So this way, we clamp the output value to the destination position if time exceeds duration.