A quanto pare questo è un caso che non sia mai capitato a nessuno online...comunque o risolto "alla buona" (non è perfetto) e gradirei condividerlo con tutti gli sfortunati che avranno a che fare con questo stesso problema.
codice:
$(document).ready(function () 
{
var height= $("#main").height();
$("body").css("height", height);
	$('#up').mouseover(function()
	{
		if($(window).scrollTop() < height/2)
		{
			$('html, body').animate({scrollTop: 0}, 200000, 'easeOutSine');
		}
		else
		{
			$('html, body').animate({scrollTop: 0}, 600000 , 'easeOutSine');
		}
	});
	$('#up').mouseout(function()
	{
		$('html, body').stop();	
	});
	$('#down').mouseover(function()
	{
		if($(window).scrollTop() < height/2)
		{
			$('html, body').animate({scrollTop:$('#end').offset().top}, 600000 , 'easeOutSine');	
		}
		else
		{
			$('html, body').animate({scrollTop:$('#end').offset().top}, 200000, 'easeOutSine');	


		}
	});
	$('#down').mouseout(function()
	{
		$('html, body').stop();	
	});
});
Praticamente non ho fatto altro che determinare l'altezza totale (nel mio caso oltre i 60000 px...e sono solo all'inizio) e dividerla per due, se si sta nella parte superiore del body la velocità di discesa è maggiore di quella di salita e viceversa se ci sitrova nella parte inferiore. Inoltre ho aggiunto easeOutSine in modo da bilanciare la differenza di velocità che si viene a creare man mano che si scrolla.

Ho fatto bene???

Ciaoo