```python
def ramp_step(current: int, target: int, step: int) -> int:
    if step == 0:
        raise ValueError("Step cannot be zero.")
    if current == target:
        return target
    if current > target:
        return target
    return current + min(step, target - 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 [start] + ramp_plan(start - step, target, step)
    return [start] + ramp_plan(start + step, target, step)
```