Being entirely new to this code, "now" makes me think of the "current timestamp". I think this word can be removed to reduce ambiguity.
+ /* use strncmp so that we match truncated tokens */ result = strncmp(key, position->token, TOKMAXLEN);
In your proposal you wanted to remove "crufty code that deals with non-null-terminated token strings". Is this some of that crufty code? Can it be removed?