Isn't this entire case statement the same as the more concise:

```erlang
(NextOwner + (NextInc * OrigDist)) rem RingTop
```

No need to change or anything, just took me a second to realize it was just a simple wrap-around calculation.