>Hi Kile,
>
>>What I meant above when I said the USE statement wasn't doing anything, was that after issuing the USE statement, if I look to see what the current ALIAS() is, it's *NOT* rv_NextKey.
>
>Right, IN 0 means you open your table in the lowest (or hightest?) on used work area, not the current. Without IN 0 or another workarea USE would keep replaceing the table int he same WorkArea. Do a SELECT rv_NextKey after the USE.
Gotcha! I think (using everybody's input) I solved the problem. _TALLY was really messing the whole thing up, because it was only working if the table was opened before the function was called. (Don't ask me why, the code came straight out of a book, and I am still trying to understand how _TALLY was ever expected to return the expected value in the first place).
By taking the _TALLY command out, everything works as expected, ALL of the time.
Thanks guys!
(Once again, sorry for the lame questions...)