Try this: http://search.twitter.com/search.json?q=earthquake%20until%3A2012-05-04&rpp=30
I basically saw the behavior of how the results show up when I use '%20' VS '&' between parameters. It just ignores when I use '&' before the until parameter and hence gives me all results even till today. However, if you try using '&' and still have rpp=30, it correctly displays 30 results!
So, I guess we should keep in mind of so many constraints while working on this API. Like first of all the results shown using this get/search is only within about 6-9 days. And then we have lot of options with the parameters!
But sometimes is still confusing to me..