Code:
Auto_Whistle:
   'Check for auto whistle (shares V_Bat input)
   'ADCIN Batt_Whis_ADCIN,V_Mon        
   'if ((V_Mon < ADC_Low) and (Whistle_Off_Flag = 0) and (Percent <  50)) then      <<<<<<< This is the problem line
   if ((Reed_SS_Bell = 0) and (Whistle_Off_Flag = 0) and (Percent < 50)) then
      LOW LED       'Turn LED off for diagnostics
      high Sound_Whistle
      pause 750                       
      low Sound_Whistle
   endif
return
The above code works great. 50% of the time the "whistle" will blow, which is the goal.

Code:
R_Num_Seed = R_Num_Seed + 1
   Random R_Num                         'shake the dice
   Percent = (R_Num//100)+1             'scale 1 to 100
R_Num and R_Num_Seed are words'
Percent is a byte.
The random code itself has been tested and proven in several other places with different PICs.

If I use the two commented out line for the ADC input, the result is the whistle blows about 95% of the time. Something with the ADC code is screwing up random. The actual hardware input doubles as a logic input and an analog input. I am using a PIC 18F14K22. AN2 is the analog input.
Is something in ADC stuff clobbering the random function?