Francois,
Let's cut to the chase here, you are running around a tree. The SELECT statement will query a table or a group of tables and produce a result set. When you use the SELECT command the only DEPENDABLE way to know the number of records in the result is _TALLY. That's it, no more confussion, simple. FORGET RECCOUNT() when SELECT is involved. Don't use it, ever, for nothing, not, never, no, ok?
So if you see SELECT you use _TALLY if you see no SELECT you can use RECCOUNT().
SELECT * FROM Whatever ...
_TALLY
USE MyDbf
? RECCOUNT()
COUNT FOR NOT DELETED() TO Howmany
?Howmany