This was a big head banger.

If you are are using query_posts multiple times on a page, and are trying to paginate the second loop on the page, the following

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

will always return 1, Unless you place wp_reset_query() below the previous loop.


rewind_posts();

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

query_posts(
array(
'cat'=>'5',
'orderby'=>'date',
'order'=>'DESC'
)
);

if(have_posts())
{
?>
// Post template goes here.
}
wp_reset_query();
?>

Pagination should now work for the next loop.