diff --git a/src/lib/commands/fina.c b/src/lib/commands/fina.c index b80cce07..c2280a22 100644 --- a/src/lib/commands/fina.c +++ b/src/lib/commands/fina.c @@ -81,6 +81,10 @@ fina(void) xdur += rdur; rdur = 0; } + if (xdur < 0) { + rdur += xdur; + xdur = 0; + } if (CANT_HAPPEN(loan.l_ldur == 0)) continue; diff --git a/src/lib/commands/repa.c b/src/lib/commands/repa.c index c22a96b1..b2f2e0ae 100644 --- a/src/lib/commands/repa.c +++ b/src/lib/commands/repa.c @@ -84,6 +84,10 @@ repa(void) doubletime += normaltime; normaltime = 0; } + if (doubletime < 0) { + normaltime += doubletime; + doubletime = 0; + } rate_per_sec = loan.l_irate / ((double)loan.l_ldur * SECS_PER_DAY * 100.0); diff --git a/src/lib/subs/disloan.c b/src/lib/subs/disloan.c index 625de08c..bf7db5f3 100644 --- a/src/lib/subs/disloan.c +++ b/src/lib/subs/disloan.c @@ -94,6 +94,10 @@ disloan(int n, register struct lonstr *loan) doubletime += normaltime; normaltime = 0; } + if (doubletime < 0) { + normaltime += doubletime; + doubletime = 0; + } rate = ((double)loan->l_irate / 100.0) / (loan->l_ldur * SECS_PER_DAY); owe = ((double)loan->l_amtdue *