Just a beginner myself, but seeing as you're still looking for help, I'll give it a stab.

I did a similar project to the one you referenced, except I used a 12F683. The main difference being that the 12F683 has one CCP pin, which means you can use the HPWM command and save a lot of headaches.

I also used an LM34 which does temp. in fahrenheit.

Here is the code which should be pretty easy to modify for your purpose:
Code:
'This program uses a 12F683 chip wired as follows:
'Pin 2 (GPIO 5) - Status LED          Pin 7 (GPIO 0) - to LM34 Temp sensor 
'Pin 3 (GPIO 4) - Low Speed LED       Pin 6 (GPIO 1) - high speed LED
'Pin 4 (GPIO 3) - Not used (MCLR)     Pin 5 (GPIO 2) - pwm to fan mosfet

' Defines: 

    DEFINE	ADC_BITS	10	' Set number of bits in result
    DEFINE	ADC_CLOCK	3	' Set clock source (3=rc)
    DEFINE	ADC_SAMPLEUS  50	' Set sampling time in uS
        
' Registers:

TRISIO = 1
ANSEL = %00010001      ''Fosc/8 conversion speed  for 4mHz processor, AN0 analog input
CMCON0 = 7
ADCON0.7 = 1           'Right Justified (10 bit conversion)


'Variables:

Raw_Temp var word
Temp Var word
Avg_Temp var word
LED1 var GPIO.5
LED2 var GPIO.4
LED3 var GPIO.1
X var byte

Raw_Temp = 0
Temp = 0
X = 0

'Program Start:

LED1 = 1      'Always on status light  
   
START:
    LED2 = 0
    LED3 = 0  
    HPWM 1,0,1000
    Gosub GETDATA
        IF TEMP => 95 THEN GOTO MOTORSTART
    PAUSE 5000
    GOTO START
    
MOTORSTART:   'Starts motor at full speed
    HPWM 1,255,1000
    PAUSE 1000
        GOTO THIRTY
         
THIRTY:
    hpwm 1,77,1000
    LED2 = 1
    LED3 = 0  
        GOSUB GETDATA
        IF TEMP < 92 THEN GOTO START
        IF TEMP > 105 THEN GOTO SEVENTY
    PAUSE 5000
    GOTO THIRTY

SEVENTY:
    HPWM 1,180,1000
    LED2 = 1
    LED3 = 1
        GOSUB GETDATA
        IF TEMP < 100 THEN GOTO THIRTY
        IF TEMP > 115 THEN GOTO FULL
    PAUSE 5000
    GOTO SEVENTY
    
FULL:
    HPWM 1,255,1000
    LED2 = 0
    LED3 = 1
        GOSUB GETDATA
        IF TEMP < 110 THEN GOTO SEVENTY
    PAUSE 5000
    GOTO FULL
    
GETDATA:
   Avg_Temp = 0
     for x = 1 to 5   'Hysteresis by averaging 5 samples  
        ADCIN 0,RAW_TEMP
        pause 5
        Avg_Temp = Avg_Temp + Raw_temp
        pause 1000
        next x
     TEMP = ((Avg_Temp/5)*49) / 100    'Farenheit conversion
     PAUSE 50
'     SEROUT GPIO.4,4,["      Temp  ",#Temp,13,10]   'For debugging
    RETURN
    
END