Hello Mark
Hfilter() is just the setup and then you have to issue HReadFirst() to find the first match.
After that I don't think there is any way other than cycling through the data and counting each time you issue HReadNext()
I would try a View. I don't think many people use them but they are very fast and extracting the count is simply HnbRec(Viewname) , plus you can then use the data in the view as if it is file. A query would do the same but a view is simpler as it is just a single line of code.
Regards
Al