--- linux-source-2.6.9.orig/drivers/macintosh/therm_adt746x.c	2005-01-26 02:50:31.941528728 +0100
+++ linux-source-2.6.9/drivers/macintosh/therm_adt746x.c	2005-01-26 03:10:36.925343344 +0100
@@ -272,7 +272,10 @@
 						printk(KERN_INFO "adt746x: Limit exceeded by %d, setting speed to specified for %s.\n",
 							var, fan_number?"GPU":"CPU");					
 					th->overriding[fan_number] = 0;
-					write_fan_speed(th, fan_speed, fan_number);
+					if ((var > 2) && (var < 8))
+						write_fan_speed(th, (int)(fan_speed * var / 6), fan_number);
+					else
+						write_fan_speed(th, fan_speed, fan_number);
 					started = 1;
 				} else if (var < -1) {
 					/* don't stop iBook fan if GPU is cold and CPU is not
