Looks like I made yet another sign error:

```
shift = 0, value = 1 -> OK
shift = 1, value = (upper / central - 1) + 1 =  upper/central -> OK
shift = -1, value = -(lower/central - 1) + 2 = 2 - lower/central -> :(
```

I think you want:

```python
if lower:
      value = abs(shift) * (lower / central - 1) + 1
```