It's not a problem, it's a "feature".
My experience is with the Java SearchAPI only -- I've no idea how the .NET one works.
When you create and execute a query object for 10 results, you'll get a result object with all the information you need to present those 10 results to a user. If you invoke the iterator, you can iterate over those 10, BUT when you get to the end, the API will go back to the FAST QR server and fetch the next 10 hits. So the iterator will continue to move through the next set of 10. This will continue until you've iterated over ALL the results that FAST can find -- i.e. it does NOT stop at the 10 you originally requested.
A typical approach is to use an old fashioned FOR loop with a counter that will stop at 10. Use that to build a real List of results, than use that List at the presentation layer, or wherever you need to use it.