On AEM 6.2 / Oak 1.4.16 (or earlier Oak version), when a query returns 21 items in the result then javax.jcr.query.QueryResult.getSize() returns -1.
This only happens when this JVM parameter / system property is set:
-DfastQuerySize=true
This is caused by a bug in Apache Oak - OAK-6391.