Effectively Dave, I found a solution. The problem was the transformation of value-128. I change the original tranformation by value+128 when it's under 0.
After test, it seems work. What do you think about this new code.
-------------------------
FUNCTION Mix (string1$,action$)
Dim Res$
Dim NxtChrVal%
Dim NxtChr$
Dim Stepper%
Dim cnt, x as integer
Res$ = ""
cnt = len(string1$)
Select Case action$
Case "E"
Stepper = 1
for x = 1 to cnt
NxtChrVal% = Asc(Mid(string1$,x,1))+(x*Stepper)
IF NxtChrVal% > 128 THEN NxtChrVal% = NxtChrVal% - 128
Res$ = Res$+Chr(NxtChrVal%)
next x
Case "D"
Stepper = -1
for x = 1 to cnt
NxtChrVal% = Asc(Mid(string1$,x,1))+(x*Stepper)
IF NxtChrVal% < 0 THEN NxtChrVal% = NxtChrVal% + 128
Res$ = Res$+Chr(NxtChrVal%)
next x
End Select
Mix = Res$
End function
----------------------------------
Gilles.