Can someone please
1) Explain the calculation behind MAXDELAY in the following program
2) Confirm if in Dimmers only Positive half is controlled (and WHY)?

Code:
    ' Lamp dimmer
    ' ===========
    '
    ' File name : LampDim.bas
    ' Company : Mister E 
    ' Programmer : Steve Monfette
    ' Date : 23-12-2004
    ' Device : PIC12F675
    '
    '
    ' This program is use to dim intensity of an AC line load
    ' like lamp, motor and other.  Developped for 60 Hz line.
    '
    ' This allow to increase or decrease intensity.
    ' If the user doesn't held at least 0.5 sec:
    '    1. "Increase" : we will set the output for full brightness
    '    2. "Decrease" : we will turn off the output
    '
    '
    ' The software need :
    '     1. A full wave signal from the AC line on GP4
    '
    ' The software use :
    '     1. TIMER1 overflow to check if pushbutton are hold for
    '        more than 0.5 Sec
    '     2. Interrupt on GP4 (AcLine input) to synchronise Triac
    '
    '
    '        Device programming mode and hardware definition 
    '        ===============================================
             ' Using Internal Clock, no clock out
             ' Enable Watch dog timer
             ' Disable MCLR pin   
             ' Enable Power-up timer
             ' Enable Brown-out detect
             '
@ __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _MCLRE_OFF & _PWRTE_ON & _BODEN_ON
             '
             '
TRISIO = %11111011
OPTION_REG.7=0	' Enable pull-ups
WPU=%00000011	' Enable pull-ups on GP0, GP1
CMCON=7	' Disable analog comparator
ANSEL=0	' Disable analog converter

Pb_Inc	var	GPIO.0 ' Input for INCREMENT/ON push button
Pb_Dec	var	GPIO.1 ' Input for DECREMENT/OFF push button
Triac	var	GPIO.2 ' Output to TRIAC gate
ACLine	var	GPIO.4 ' Input for the FullWave rectify AC line
    '
    '        Software definition
    '        ===================    
             '
             '
             '
MaxDelay                    var word
TriacDelay                  var Word
Debounce_AutoRepeatDelay	var	word
FullBright                  var bit
    '
    '
    '        Interrupts definition
    '        =====================
             '
             '
             '
INTCON=%10001000 ' Enable interrupt on GPIO change
IOCB.4=1	     ' Enable interrupt on GP4 change
PIE1.0=0 	     ' disable TMR1 overflow interrupt
T1CON=%00110100  ' Set TIMER1 
				 ' prescaler 1:8
				 ' internal clock (Fosc/4) 1MHZ
				 ' synchro internal
				 ' we will use TIMER1 overflow
				 ' $ffff * 8* (1/(4MHZ / 4)) = 0.524 Sec
ON INTERRUPT GOTO ACDetect
   '
   '          Hardware and variable initialisation
   '          ====================================
              '
              '
Maxdelay=6000 ' Set Maximum delay (set to 8000 for 50Hz)
FullBright=0  ' disable Full Brightness flag
triac=0       ' disable Triac Gate
triacdelay=0  ' Set delay to minimum
gosub ResetTimer1 ' reset Timer1
   '
   '      Main
   '      ====
   ' Get entry from user to Increment of Decrement intensity
   '  
   '
start: 
   '
   ' Test Increment push button
   ' --------------------------
   ' If hold more than .5 Sec, increment triac gate delay by 500 uSec
   ' case else Full brightness at output
   '
while Pb_inc=0 
    gosub TestTimer1 ' test status of TIMER1
	while (Pb_inc==0) AND (PIR1.0==0) 'loop while holding push button 
									  'and no TIMER1 overflow

    wend
    
    if PIR1.0==1 then ' If timer overflow (pushbutton hold for > 0.5 sec), 
    	T1CON.0=0     ' disable TMR1
		gosub Debounce_AutoRepeat
		if (triacdelay<Maxdelay) then
			triacdelay=triacdelay+500 'increment Triac gate delay
		else
			triacdelay=maxdelay ' if triacDelay>MaxDelay,
			fullbright=1        ' set the full brightness Flag
		endif
	else 
        triacdelay=maxdelay ' If pushButton was hold less than .5 sec
        Fullbright=1 ' Set the full brightness flag
    endif
wend
gosub ResetTimer1
   '
   ' Test Decrement push button
   ' --------------------------
   ' If hold more than .5 Sec, increment triac gate delay by 500 uSec
   ' Case else, turn off output
   '
while Pb_dec=0 
    gosub TestTimer1 ' Test status of TIMER1
	while (Pb_dec==0) AND (PIR1.0==0) 'loop while holding push button 
									  'and no TIMER1 overflow

    wend
    
    if PIR1.0==1 then ' If timer overflow (pushbutton hold for > 0.5 sec), 
    	T1CON.0=0 ' disable TIMER1
		gosub Debounce_AutoRepeat
		if (triacdelay>0) then
			Fullbright=0 ' Reset TRIAC always ON flag
			triacdelay=triacdelay-500
		endif
	else
		Fullbright=0 ' Reset TRIAC always ON flag
        triacdelay=0
    endif
wend
gosub ResetTimer1
goto start
    '
    '
    '     TestTimer1
    '     ----------
    '
    ' Enable TIMER1 if :
    '    not enable and not in overflow
    '
TestTimer1:
	if (T1CON.0==0) AND (PIR1.0==0) then 'if TIMER1 not enable
    									 'and TIMER1 not overflow	
		T1CON.0=1 'enable TIMER1
	endif
    return
    '
    '
    '     ResetTimer1
    '     -----------
    '
    ' Subroutine to clear Timer1
    '    1. Overflow flag
    '    2. Disable Timer
    '    3. Clear counter
    '
ResetTimer1:
PIR1.0=0  'clear timer overflow
T1CON.0=0 'disable timer
TMR1L=$00 'clear counter
TMR1H=$00 '
return
    '
    '
    '     Debounce_AutoRepeat
    '     -------------------
    '
    ' Subroutine to debounce push button.
    ' Also provide kind of auto-repeat when push button
    ' are held down.
    '
    ' each delay = 20 mSec
    ' Use of PAUSEUS to be sure getting ACLine interrupt
    '
Debounce_AutoRepeat:

for Debounce_AutoRepeatDelay=1 to 2000
	pauseus 10
next
return
    '
    '
    '       ACDetect
    '       --------
    '
    ' Interrupt routine called by ACLine (GP4) pin state change
    '
disable
ACDetect:
if ACline==1 then ' Check for rising edge of AC signal
	if triacdelay > 0 then
		Triac=1 ' Activate TRIAC
	    if FullBright==0 then   ' In case Brightness flag is not set
        	pauseus triacdelay  ' do the selected delay
	    	triac=0 ' Disable TRIAC
    	endif
    else
    	triac=0
    endif
endif
INTCON.0=0 ' Clear GPIF (interrupt on GP4 change)
resume
enable