I'm a newbie when it comes to programming...with some previous experience, but getting old and remembering less...

I'm creating a depth meter using a MAXSONAR ranger - using the PW output. I've made the code work previously with a Basic Stamp BS2, but want to use the 12F683 with PBP3. The problem seems to be in the math.

My input readings "inputpulse" reads anywhere from 92 to 466 after taking the average of 10 readings and dividing by 10 (just to move back the decimal). 92 (is tank full) and 364 is tank empty. using these values I am changing the tap setting on an AD5220 (digital Potentiometer). the Digipot values range from 0 to 127.

So, I need to convert the 92 and 364 to 1% or 100% respectively and apply to 127 to get a new tap setting.

I get my average readings fine, but somewhere in the math I can't get a multiplier to properly vary the 127 to a new tap setting...it gives me 0's and 1's or 11,21,31,41,51...

I'm stumped and out of scotch!

here's the code.

Code:
'@ __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _MCLRE_OFF & _CP_OFF

oSCCON = %01100111  ' Ocs set to 4 MHz
TRISIO = %00000000  ' Set all ports to outputs, in this example
CMCON0 = 7                ' Analog comparators off
ANSEL  = 0                ' Analog select set to digital, pg 69 data
ADCON0 = 0                ' A/D turned OFF, pg 68 of data

INCLUDE "modedefs.bas"
define  char_pacing     1000
define  osc 4

'Define Variables *************************

inputpulse      var word
dist            var word
avgdist         var word
x               var word
counter         VAR byte
oldtapsetting   VAR word
newtapsetting   VAR word


'Pin Assignments **************************

' GPIO.0 = Pin 7 - Serout LCD
' GPIO.1 = Pin 6 - Output clk to AD5220
' GPIO.2 = Pin 5 - Output U/D Select to AD5220
' GPIO.3 = Pin 4 - Switch Input
' GPIO.4 = Pin 3 - Input from sensor       
' GPIO.5 = Not Used
    
'Set Variables ****************************

dist            = 0
oldtapsetting   = 0
newtapsetting   = 0

'initialize outputs  **********************   
    low gpio.0
    low gpio.1
    low gpio.2
    low gpio.3
    low gpio.4
    low gpio.5




' Initialize AD5220

    LOW gpio.2
    FOR counter=0 TO 127
      PULSOUT 6,5
      PAUSE 1
    NEXT

'Main Program  ****************************

'get avg depth
    pause 1000
    for x = 1 to 10
        pulsin gpio.4,1,inputpulse
        dist= dist + inputpulse
        pause 100
    next x
    
    avgdist=dist/10
      
    select case avgdist
    
        case is < 92
            newtapsetting = 1
            
        case is > 364
            newtapsetting = 127
            
        case else
            avgdist = avgdist - 92
            'avgdist = avgdist
            newtapsetting = 127 * (avgdist / 272)
            newtapsetting = newtapsetting 
            
        end select
        

serout gpio.0,t9600,[12,"avg :", #avgdist,13]
serout gpio.0,t9600,["tap :", #newtapsetting]

pause 500

end
Help!

John