先日、time remapをループさせるときにやっかいなバグを見つけました。下のスクリーンショットで説明してみます。

結果として、アニメーションが2フレーム失われてしまいます。精度が重要な場面では、これは困りものです。
要点は、time remapのループがどうもおかしいと感じたら、デフォルトのloopOutの代わりに下のエクスプレッションを試してみてください、ということです。
// start - first keyframe
timeStart = thisProperty.key(1).time;
// count duration
duration = thisProperty.key(thisProperty.numKeys).time + thisComp.frameDuration – timeStart ;
// cycle number
quant = Math.floor((time – timeStart) / duration);
if (quant < 0) quant = 0 // != 0
if (((time – timeStart) / duration).toString() == Math.floor((time + thisComp.frameDuration – timeStart) / duration)) {
t = timeStart;
} else {
t = time – quant * duration;
}
thisProperty.valueAtTime(t);
pingpongアニメーションが必要な場合は、変数pingPongをtrueに変更することもできます。
何が問題なのかを突き止めるだけで2日もかかりました。誰かの役に立てば幸いです。
うまくいったかどうか、コメントで教えてください。
