=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/sndiod/dev.c,v retrieving revision 1.79 retrieving revision 1.80 diff -u -r1.79 -r1.80 --- src/usr.bin/sndiod/dev.c 2021/01/28 11:06:07 1.79 +++ src/usr.bin/sndiod/dev.c 2021/01/28 11:06:58 1.80 @@ -1,4 +1,4 @@ -/* $OpenBSD: dev.c,v 1.79 2021/01/28 11:06:07 ratchov Exp $ */ +/* $OpenBSD: dev.c,v 1.80 2021/01/28 11:06:58 ratchov Exp $ */ /* * Copyright (c) 2008-2012 Alexandre Ratchov * @@ -948,9 +948,15 @@ * s->ops->onmove() may remove the slot */ snext = s->next; - pos = (long long)delta * s->round + s->delta_rem; + pos = s->delta_rem + + (long long)s->delta * d->round + + (long long)delta * s->round; + s->delta = pos / (int)d->round; s->delta_rem = pos % d->round; - s->delta += pos / (int)d->round; + if (s->delta_rem < 0) { + s->delta_rem += d->round; + s->delta--; + } if (s->delta >= 0) s->ops->onmove(s->arg); }