That is ingenious; thanks so much for that solution!

How to make that work for normal humans is the next question. I mean, it’s totally reasonable once you understand the algorithm we’re using, but… In the meantime, here are some…

## Tricks for odometer goals

The odometer reset feature is surprisingly versatile. The basic usage works as follows. Note the y-values (what’s plotted on the y-axis) shown on the right.

### Starting a new book but keeping the odometer running

```
^ 20 "first 20 pages of my first book!" # y=20
^ 50 "that's it for book 1" # y=50
^ 0 "odometer reset -----------------" # y=50
^ 10 "first 10 pages of my second book" # y=10+50=60
^ 15 "a little further in book 2" # y=15+50=65
```

Technically what happens is it finds a zero datapoint and adds the y-value at that point to every future datapoint. So above, since the odometer reading was 50 when it got reset, every future value has 50 added to it. So Beeminder keeps tracking the cumulative total (just like with auto-summing Do More goals) despite the odometer reset.

That was the intended usage but you can actually do arbitrary adjustments by entering a number sandwiched between two zero datapoints to reset and adjust the odometer by that number. Ie, reset, adjust, reset again. Examples:

### Skipping the 14-page preface of a book:

```
^ -14 "i'm starting reading this book on page 15" # y=-14
^ 0 "reset the odometer -------------------------------" # y=-14
^ 15 "starting reading on page 15" # y=15-14=1
^ 16 "i made it to page 16 which is like page 2 for me" # y=16-14=2
```

### Skipping 50 pages (from page 100 to 150) of War And Peace:

```
^ 3 "i read the first 3 pages of War&Peace. go me!" # y=3
^ 100 "omg War&Peace has put me to sleep by page 100" # y=100
^ 0 "reset the odometer ------------------------------------------" # y=100
^ -150 "don't count 150 pages: 100 already counted & skipping next 50" # y=-150+100=-50
^ 0 "reset the odometer again ------------------------------------" # y=-50
^ 150 "ok, tolstoy, let's try this again" # y=150-50=100
^ 151 "made it to page 151 so 101 pages read so far (skipped 50pp)" # y=151-50=101
```

### Bookmark page 5, read pages 8-10, then continue from bookmark, ie, return for pp. 6-7:

```
^ 1 "I made it thru page 1 of this paper" # y=1
^ 5 "here I am at page 5, halfway thru, about to jump to page 8" # y=5
^ 0 "reset the odometer ---------------------------------------------" # y=5
^ -7 "skipping to page 8 (so pages 1-7 are already counted or skipped)" # y=-7+5=-2
^ 0 "reset the odometer ---------------------------------------------" # y=-2
^ 8 "I've now read page 8 (6 total pages read now)" # y=8-2=6
^ 10 "last page of the paper! (have read 1-5 & 8-10)" # y=10-2=8
^ 0 "reset the odometer ---------------------------------------------" # y=8
^ -5 "skipping the first 5 pages before starting at 6" # y=-5+8=3
^ 0 "reset the odometer ---------------------------------------------" # y=3
^ 6 "back where I left off" # y=6+3=9
^ 7 "I've now read the whole paper!" # y=7+3=10
```

### Add a one-time +1 to an odometer goal

```
^ 10 "first 10 pages of this book" # y=10
^ 0 "reset the odometer ---------------------------------------------" # y=10
^ 1 "I read one extra page from some other place. +1!" # y=1+10=11
^ 0 "reset the odometer ---------------------------------------------" # y=11
^ -10 "skipping to page 11 (pages 1-10 are already counted)" # y=-10+11=1
^ 0 "reset the odometer ---------------------------------------------" # y=1
^ 20 "continue reading, now up to page 20" # y=20+1=21
```

[tagging this #blogideas]