When calculating the records count it uses
Self.ViewTable{prop:sql} = 'Select Max(' & clip(stsname) & '), Count(*) from ' & clip(self.TableLabel)
That is TableLabel instead of Table Name, it comes from the template wich builds the sync queue.
My table label is opecontactos and the external name is ope_contactos and then the record count is always zero
see pic
besides, Its doing: if fRecords = 0 or errorcode()
and no records is not the same of an error()
PS: see my "Netsync method file boundary name" post, its related