Handle negative position
Implement adaptive interval