```python
def ramp_step(current: int, target: int, step: int) -> int:
    if step == 0:
        raise ValueError("Step cannot be zero")
    if current < target:
        return min(current + step, target)
    elif current > target:
        return max(current - step, target)
    return current


def ramp_plan(start: int, target: int, step: int) -> list:
    if step == 0:
        raise ValueError("Step cannot be zero")
    if start == target:
        return [start]
    if start < target:
        return list(range(start, target + 1, step))
    else:
        return list(range(start, target - 1, -step))
```