Had a few extra minutes and rewrote the code - I think it should work - I don't have any 16F676's to try it on.
(yer way ahead of me... my brain died off around 5 or so)...

Code:
@ DEVICE PIC16F676,INTRC_OSC_NOCLKOUT,WDT_ON,PWRT_OFF,BOD_OFF,PROTECT_OFF,CPD_OFF,MCLR_OFF
	LED var PORTA.0
	BlinkCount var byte
	CounterA var byte
	OLDPORTA VAR byte
	NEWPORTA VAR byte
; DISABLE ANALOG INPUT, COMPARATOR ON PORTA, A/D reference...
	ANSEL = 0 : CMCON = 7 : VRCON = 0
	TRISA = %00111110	; PortA In/Out states
	WPUA = %00000110
	INTCON = %10000000 : IOCA = %00111000 : OPTION_REG = %00001000
	LED = 0 : PAUSE 1000 : LED = 1
	GOTO BASE
;
; SUBROUTINES
MYINT:
	NEWPORTA = PORTA	; read current PortA state
	INTCON = %10000000
;
	IF NEWPORTA.5 <> OLDPORTA.5 THEN
		BlinkCount = 3	; Set up for 4 blinks
	ENDIF
;
	IF NEWPORTA.4 <> OLDPORTA.4 THEN
		BlinkCount = 2	; Set up for 3 blinks
	ENDIF
;
	IF NEWPORTA.3 <> OLDPORTA.3 THEN
		BlinkCount = 1	; Set up for 2 blinks
	ENDIF
;
	for CounterA = 0 to BlinkCount
		LED = 0 : PAUSE 1000 : LED = 1 : PAUSE 1000
	next CounterA
	RESUME Base
; The above section could have an error trap in case none of the IF's are true for some reason.
; A "Select Case" might use less code space.
;
; Start main program loop here
;
BASE:
	BlinkCount=0 : OLDPORTA = PORTA
;
ON INTERRUPT GOTO MYINT
	INTCON = %10001000
;
LOOP:
	SLEEP 240 : GOTO LOOP
	end

Arch