If the pointer was set to the last entry, the RESET button should set the pointer also to the last entry, not to the first. Thats what my users expects from a RESET.
Keeping the representation of the scrolling 'natural' in the human way of thinking does make the code more complicated, and following if-clause seems to handle everything well.
if ( isset($_POST['reset']) || ( ( $this->getPageNo() == 1 ) && ( ! isset($_GET['item']) ) ) )
{
// code that changes the order comes here
$this->pageno = $this->lastpage; // eg start at the last element
}