In JMeterThread.delay(), as the packed Timers are iterated and their delays accumulated, the long returned by Timer.delay() is truncated to an int. In normal jmeter operation this is not a problem, since delays are short. In my use of jmeter, two custom timers are used whose delays partially cancel (one returns a negative value) to produce the actual delay for the sampler. The use of an int to accumulate the two long values produces the wrong delay for the samplers in my test plans. The fix is to simply change the type of the sum local variable from int to long. I have a local patch on version 1.9.1. I can provide a patch for the current head revision.
Good catch - fixed in 2.1 branch (will be in 2.1.2)
Created attachment 17505 [details] Patch (context diff) fixing the bug Patch is on Revision 350089 of JMeterThread.java.
This issue has been migrated to GitHub: https://github.com/apache/jmeter/issues/1671