This works *almost* as expected:
   timer(int: 5s 0m2s repeat-limit=10 )
the exception being that the rule with this attribute fires nine times.
As might be expected, this one fies once:
   timer(int: 5s 0m2s repeat-limit=2)
But, surprise, surprise, these two both fires once, too:
   timer(int: 5s 0m2s repeat-limit=1)
   timer(int: 5s 0m2s repeat-limit=0)

I think this is due to the code in  org.drools.time.impl.IntervalTrigger
where the increment happens in getTimeAfter(), *before* the test
repeatCount >= repeatLimit; see below.

 public Date nextFireTime() {
        Date date = this.nextFireTime;
        // FIXME: this is not safe for serialization
        this.nextFireTime = getTimeAfter();
        updateToNextIncludeDate();
        if ( this.endTime != null && this.nextFireTime.after( this.endTime ) ) {
            this.nextFireTime = null;
        } else if (  repeatLimit != -1 && repeatCount >= repeatLimit ) {
            this.nextFireTime = null;
        }
        return date;
    }

    private Date getTimeAfter() {
        this.repeatCount++;
        ...
}