Hi is There away to set a group address to have a maximum value of 160 (63%) in the logic, I am trying to integrate a axium multi zone amp in to my c-bus system and it requires hex values for the volume (00 to A0 ) 0 to 160 bass and treble (F4 - 0C) -12 to 12 I have got most of it figured out using IntToHexString but using a regular group address gives me a value from (00 to FF) Is there a way to do this at all as i would like to control the volume bass treble etc from DLT's as well as the wiser. The code i have so far {constants} {Commands} LF = #</body>A; MuteCommand = ##; SourceCommand = ##; VolumeCommand = ##; BassCommand = ##; TrebleCommand = ##; {Zones} Z1Amp = ##; Z1Pre = ##; Z2Amp = ##; Z2Pre = ##; Z3Amp = ##; Z3Pre = ##; Z4Amp = ##; Z4Pre = ##; {Data} {Source's} CD = ##; Tape = ##; Tuner = ##; Aux = ##; Utility = ##; Sat = ##; DVD = ##; Video = ##; {Mute} Mute = ##; UnMute = ##; ToggleMute = ##; {Zone 1 Controls} Z1AmpOn = #######</body>A; Z1AmpOff = #######</body>A; Z1AmpVolume = ####; Z1AmpBass = ####; Z1AmpTreble = ####; Z1PreOn = #######</body>A; Z1PreOff = #######</body>A; Z1PreVolume = ####; Z1PreBass = ####; Z1PreTreble = ####; {Variables} {VariablesVolume} Zone1VolumeHex : String; OutString : String; RequiredVolumeZone1 : Integer; CurrentVolumeZone1: integer; {Module Code} RequiredVolumeZone1 := GetLightingLevel("Zone1AmpVolume"); {get the level} OutString := Z1AmpVolume; {set the first part of the command string} IntToHexString(RequiredVolumeZone1,0,Zone1VolumeHex); {set the variable part of the command & convert cbus level to hex value } Append(OutString,Zone1VolumeHex); {add the strings together} Append(OutString,LF); {add a line feed } if ( RequiredVolumeZone1 <> CurrentVolumeZone1) then begin WriteSerial(1,OutString); CurrentVolumeZone1 := RequiredVolumeZone1; end;