Thanks for the explanation Henrik.
The more we pound on this and post the results, the better we can get a handle on it.
That concept started to peek through the fog eventually. The fact that my frequency and duty had to be changeable made it a bit more confusing for me.

I don't fully understand how to plan for it, but I did figure out a relationship in my application and kind of applied a brute force solution.

What I ended up with was this:
Code:
'* Working:  1.2Hz to 101Hz, .2% - 97% Duty 
'****************************************************************
'                            18F1330                                                             
'              ---------------------u----------------------
'    Freq    -1|RA0/AN0/INT0                  RB3/INT3/CMP1|18-   Switch      
'    Duty    -2|RA1/AN1/INT1                  RB2/INT2/CMP2|17-   Pad      
'    Pad     -3|RA4/TOCKI/AN2                 RA7/OSC1/CLKI|16-   Pad     
'    Vpp     -4|RA5/MCLR/vpp              RA6/OSC2/CLKO/AN3|15-   Pad           
'    Gnd     -5|-- VSS                                VDD++|14-   5 vdc         
'    Tx      -6|RA2/TX/CK                      RB7/PGD/PWM5|13-    PGD      
'    Rx      -7|RA3/RX/DT                      RB6/PGC/PWM4|12-    PGC      
'   Pad      -8|RB0/PWM0                           RB5/PWM3|11-   Q1/Q4 PWM      
'   Pad      -9|RB1/PWM1                           RB4/PWM2|10-   Q2/Q3 PWM        
'              |___________________________________________|

#CONFIG
    CONFIG OSC = INTIO2        ;Internal oscillator, port function on RA6 and RA7
#ENDCONFIG
DEFINE OSC 4                  ' Actually @ 2MHz 
OSCCON  = %11011100         ' INTOSC primary, 2MHz
'****** Hardware Serial Setup ***************
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_CLROERR 1 ' Clear overflow automatically
DEFINE HSER_SPBRG 8   ' 57600 Baud @ 2MHz, -3.55%
SPBRGH = 0
BAUDCON.3 = 1         ' Enable 16 bit baudrate generator
'***************************************
TRISA   = %00000011          ' PortA : outputs except RA.0/RA.1= AN
TRISB   = %00001000          ' all outputs ex: RB.3 switch i/p  
INTCON    = 0                      ' 
INTCON2 = 0                     
CMCON   = 0                      ' Comparators off
clear
'**** Analog setup   ****************************
    ADCON1 = %00001100        ' AN0,AN1 Analog: VDD ref. RA4 & RA6 DIO
    ADCON2 = %10000000       ' Right justified, 0 Tad, Fosc/2
'***** PWM Setup  *******************************
    PTCON0 = %00001110      ' 1:1 post, Fosc/256 (1:64) pre, UpDown(...00 free)
    PTCON1 = %11000000      ' PWM Time Base timer on, Count Down      
    PWMCON1 = 1             ' 1:1 postscale, updates enabled, overrides sync 
    DTCON = 0               ' zero dead-time  
    PTCON1 = %10000000      ' PWM time base is ON, counts up
    FLTCONFIG = 0           ' disable fault A 
    OVDCONS      =    %00000000    ' 
'***** Variable definition  **********************
PORTB = 0                       ' clear port latch
Fraw         var    word          ' Raw reading for Frequency
Freq         var    word        ' Frequency of PWM
Draw         var    word        ' Raw reading for Duty
Duty         Var    LONG          
Sw             var    PORTB.3        ' switch input for AC or Positive only
'************************************************
Start:
    hserout  ["1330_H-bridge85",13,10]
    pause 500    
'************************************************
Main: 
    If sw = 0 then               ' mode check                
       PWMCON0 = %00110111      ' 0-3 PWM,  independant
       OVDCOND = %00001000        ' enable only PWM3 OUT1 (Q1/Q4 on RB5)       
    else
       PWMCON0 = %00110000      ' 0-3 PWM,  complementary
    endif      
  ADCON0 = %00000011            ' Start conversion on AN0
    WHILE ADCON0.1=1             ' Wait for it to complete 
    WEND   
     Fraw.HighByte = ADRESH     ' get result from AN0
     Fraw.LowByte = ADRESL      '     
  ADCON0 = %00000111            ' Start conversion on AN1
    WHILE ADCON0.1=1             ' Wait for it to complete 
    WEND    
     Draw.HighByte = ADRESH     ' get result from AN1
     Draw.LowByte = ADRESL      '      
     Freq = (Fraw *3) max 38    ' 
     draw = draw +1
     Duty=((freq*Draw)/261) +1
         PTPERH = Freq.highbyte 'load timer: Freq low byte
         PTPERL = Freq.lowbyte     ' Freq low byte
           PDC1H = Duty.HighByte  ' PWM duty
         PDC1L = Duty.LowByte          
hserout ["D",dec duty,"F",dec Freq]
goto Main                        ' Loop   
end
Like I said, I'm going to have to study my own work just to understand it better, but at least it works like it is suppose to. Yay! That was a few weeks of hair pulling!. Beat your head long enough against the wall, and sometimes you find a door.

Thanks
Bo