Attribute VB_Name = "Module1"

Function Add$(nnn1$, nnn2$)
n1$ = Trim$(nnn1$): n2$ = Trim$(nnn2$)
If InStr(n1$, "-") <> 0 Xor InStr(n2$, "-") <> 0 Then
If InStr(n2$, "-") <> 0 Then Add$ = Subt$(Right$(n1$, Len(n1$) - InStr(n1$, "-")), Right$(n2$, Len(n2$) - InStr(n2$, "-"))): Exit Function
If InStr(n1$, "-") <> 0 Then Add$ = Subt$(Right$(n2$, Len(n2$) - InStr(n2$, "-")), Right$(n1$, Len(n1$) - InStr(n1$, "-"))): Exit Function
End If
If InStr(n1$, "-") <> 0 And InStr(n2$, "-") <> 0 Then Neg$ = "-": n1$ = Right$(n1$, Len(n1$) - InStr(n1$, "-")): n2$ = Right$(n2$, Len(n2$) - InStr(n2$, "-"))




If InStr(n1$, ".") <> 0 Or InStr(n2$, ".") <> 0 Then
If InStr(n1$, ".") = 0 Then n1$ = n1$ + ".0"
If InStr(n2$, ".") = 0 Then n2$ = n2$ + ".0"
If InStr(n1$, ".") > InStr(n2$, ".") Then n2$ = String$(InStr(n1$, ".") - InStr(n2$, "."), "0") + n2$ Else n1$ = String$(InStr(n2$, ".") - InStr(n1$, "."), "0") + n1$
If Len(n1$) - InStr(n1$, ".") > Len(n2$) - InStr(n2$, ".") Then n2$ = n2$ + String$((Len(n1$) - InStr(n1$, ".")) - (Len(n2$) - InStr(n2$, ".")), "0") Else n1$ = n1$ + String$((Len(n2$) - InStr(n2$, ".")) - (Len(n1$) - InStr(n1$, ".")), "0")
Stor = Len(n1$) - InStr(n1$, ".")
If InStr(n1$, ".") <> 0 Then n1$ = Left$(n1$, InStr(n1$, ".") - 1) + Right$(n1$, (Len(n1$) - InStr(n1$, ".")))
If InStr(n2$, ".") <> 0 Then n2$ = Left$(n2$, InStr(n2$, ".") - 1) + Right$(n2$, (Len(n2$) - InStr(n2$, ".")))
Else
If Len(n1$) > Len(n2$) Then n2$ = String$(Len(n1$) - Len(n2$), "0") + n2$ Else n1$ = String$(Len(n2$) - Len(n1$), "0") + n1$
End If

For q = Len(n1$) To 1 Step -1
mx$ = LTrim$(RTrim$(Str$((Val(Mid$(n1$, q, 1)) + Val(Mid$(n2$, q, 1))) + Rmd)))
Rmd = Val(Left$(mx$, Len(mx$) - 1)): mx$ = Right$(mx$, 1)
cc$ = mx$ + cc$
Next q
If Rmd = 0 Then D$ = cc$ Else D$ = LTrim$(RTrim$(Str$(Rmd))) + cc$
If Stor <> 0 Then D$ = Left$(D$, Len(D$) - Stor) + "." + Right$(D$, Stor)
Add$ = Neg$ + D$

End Function

Function AddComma$(N$)
If InStr(N$, ".") = 0 Then dd = Len(N$) Else dd = InStr(N$, ".") - 1
For q = dd To 1 Step -1
If (dd - q) Mod 3 = 0 And q <> dd Then mm$ = "," + mm$
mm$ = Mid$(N$, q, 1) + mm$
Next q
If InStr(N$, ".") <> 0 Then dc$ = "." + Right$(N$, Len(N$) - InStr(N$, "."))
AddComma$ = mm$ + dc$
End Function

Function Div$(nnn1$, nnn2$)
n1$ = nnn1$: n2$ = nnn2$
If IsGreater(n1$, n2$) = 3 Then Div$ = "1": Exit Function
If InStr(n1$, ".") = 0 Then Mrk = Len(n1$) Else Mrk = InStr(n1$, ".")
Dim Num$(9)
Num$(1) = n2$
For q = 2 To 9
        Num$(q) = Mul$(n2$, Trim$(Str$(q)))
Next q
Level = Len(n1$)
Do
        Level = Level - 1
        c = Len(n1$) - Level: Cl$ = ""
        Do Until 1 = 2
                Cl$ = Left$(n1$, c)
                If IsGreater(n1$, Cl$) = 1 Or IsGreater(n1$, Cl$) = 3 Then Exit Do Else c = c + 1
        Loop
        mmx = c
        Cl$ = Left$(n1$, mmx)
        For g = 1 To 9
                If IsGreater(Cl$, Num$(g)) = 2 Then mmz = g - 1: Exit For
        Next g
        tt$ = tt$ + Trim$(Str$(mmz))
        If Level >= 0 Then Post$ = String$(Level, "0"): pre$ = "" 'ELSE pre$ = "." + STRING$(Level * -1, "0"): Post$ = ""
        n1$ = RemoveZero$(Subt$(n1$, Num$(mmz) + Post$))
If Level < 0 And n1$ <> "0" Then n1$ = n1$ + "0"
'if Instr(Mrk,tt$,)
Loop Until n1$ = "0" Or Stpp
tt$ = RemoveZero$(tt$)
Debug.Print Mrk
If Len(tt$) = Mrk - 1 Then Div$ = tt$ Else Div$ = Left$(tt$, Mrk) + "." + Right$(tt$, Len(tt$) - (Mrk + 1))
End Function

Sub Errorr(Msg$)
Print "Error:"; Msg$
End Sub

Function Fact$(nn$)
ff$ = nn$
gg$ = nn$
Do
ff$ = RemoveZero$(Subt$(ff$, "1"))
gg$ = RemoveZero$(Mul$(gg$, ff$))
Loop Until RemoveZero$(ff$) = "1"
Fact$ = RemoveZero$(gg$)
End Function

Function FindCPUMathErrors()
Cls
VIEW PRINT 1 TO 24
LOCATE 1, 1: Print "CPU"; Tab(36); " ³ "; "VMPU"
LOCATE 2, 1: Print String$(36, 196) + "Å" + String$(42, 196);
LOCATE 25, 1: Print "Press Any Key to Stop Test";
VIEW PRINT 3 TO 24
If 33.1 / 331 <> 0.1 Then ErrErrs = 1: Print 33.1 / 331; Tab(36); " ³ .1"
g$ = "-40"
inc$ = ".001"
Do
g$ = Add$(g$, inc$)
If IsGreater(Str$(Val(g$) - Val(inc$)), Subt$(g$, inc$)) <> 3 Then ErrErr1 = 1
If Val(g$) - Val(inc$) <> Val(Subt$(g$, inc$)) And ErrErr1 = 1 Then Print Val(g$) - Val(inc$); Tab(36); " ³ "; Val(Subt$(g$, inc$)): ErrErrs = ErrErrs + 1

If IsGreater(Str$(Val(g$) * Val(inc$)), Mul$(g$, inc$)) <> 3 Then ErrErr2 = 1
If Val(g$) * Val(inc$) <> Val(Mul$(g$, inc$)) And ErrErr2 = 1 Then Print Val(g$) * Val(inc$); Tab(36); " ³ "; Val(Mul$(g$, inc$)): ErrErrs = ErrErrs + 1

If IsGreater(Str$(Val(g$) + Val(inc$)), Add$(g$, inc$)) <> 3 Then ErrErr3 = 1
If Val(g$) + Val(inc$) <> Val(Add$(g$, inc$)) And ErrErr3 = 1 Then Print Val(g$) + Val(inc$); Tab(36); " ³ "; Val(Add$(g$, inc$)): ErrErrs = ErrErrs + 1


'LOCATE CSRLIN, 1: PRINT g$; ", Errors:"; ErrErrs;
ErrErr1 = 0: ErrErr2 = 0: ErrErr3 = 0: ErrErr4 = 0:
If INKEY$ <> "" Then Print: Exit Do
Loop Until g$ = "40"
FindCPUMathErrors = ErrErrs
X = CSRLIN
VIEW PRINT 1 TO 25
LOCATE X, 1
End Function

Function IsGreater(nnn1$, nnn2$)
n1$ = nnn1$: n2$ = nnn2$
If InStr(n1$, "-") <> 0 And InStr(n2$, "-") = 0 Then IsGreater = 2: Exit Function
If InStr(n2$, "-") <> 0 And InStr(n1$, "-") = 0 Then IsGreater = 1: Exit Function
If InStr(n2$, "-") <> 0 And InStr(n1$, "-") <> 0 Then nn1$ = n1$: nn2$ = n2$: n1$ = nn2$: n2$ = nn1$

n1$ = Right$(n1$, Len(n1$) - InStr(n1$, "-")): n2$ = Right$(n2$, Len(n2$) - InStr(n2$, "-"))


If InStr(n1$, ".") <> 0 Or InStr(n2$, ".") <> 0 Then
If InStr(n1$, ".") = 0 Then n1$ = n1$ + ".0"
If InStr(n2$, ".") = 0 Then n2$ = n2$ + ".0"
If InStr(n1$, ".") > InStr(n2$, ".") Then n2$ = String$(InStr(n1$, ".") - InStr(n2$, "."), "0") + n2$ Else n1$ = String$(InStr(n2$, ".") - InStr(n1$, "."), "0") + n1$
If Len(n1$) - InStr(n1$, ".") > Len(n2$) - InStr(n2$, ".") Then n2$ = n2$ + String$((Len(n1$) - InStr(n1$, ".")) - (Len(n2$) - InStr(n2$, ".")), "0") Else n1$ = n1$ + String$((Len(n2$) - InStr(n2$, ".")) - (Len(n1$) - InStr(n1$, ".")), "0")
Stor = Len(n1$) - InStr(n1$, ".")
If InStr(n1$, ".") <> 0 Then n1$ = Left$(n1$, InStr(n1$, ".") - 1) + Right$(n1$, (Len(n1$) - InStr(n1$, ".")))
If InStr(n2$, ".") <> 0 Then n2$ = Left$(n2$, InStr(n2$, ".") - 1) + Right$(n2$, (Len(n2$) - InStr(n2$, ".")))
Else
If Len(n1$) > Len(n2$) Then n2$ = String$(Len(n1$) - Len(n2$), "0") + n2$ Else n1$ = String$(Len(n2$) - Len(n1$), "0") + n1$
End If


For q = 1 To Len(n1$)
If Val(Mid$(n1$, q, 1)) > Val(Mid$(n2$, q, 1)) Then IsGreater = 1: Exit Function
If Val(Mid$(n2$, q, 1)) > Val(Mid$(n1$, q, 1)) Then IsGreater = 2: Exit Function
Next q
IsGreater = 3
End Function

Function Mul$(nnn1$, nnn2$)
nn1$ = Trim$(nnn1$): nn2$ = Trim$(nnn2$)
If nn1$ = "1" Then Mul$ = nn2$: Exit Function
If nn2$ = "1" Then Mul$ = nn1$: Exit Function
If nn1$ = "-1" Then nn2$ = " " + nn2$: Mid$(nn2$, Val(Switch$(InStr(nn2$, "-") = 0, "1", InStr(nn2$, "-") <> 0, Str$(InStr(nn2$, "-")))), 1) = Switch$(InStr(nn2$, "-") <> 0, " ", InStr(nn2$, "-") = 0, "-"): Mul$ = Trim$(nn2$): Exit Function
If nn2$ = "-1" Then nn1$ = " " + nn1$: Mid$(nn1$, Val(Switch$(InStr(nn1$, "-") = 0, "1", InStr(nn1$, "-") <> 0, Str$(InStr(nn1$, "-")))), 1) = Switch$(InStr(nn1$, "-") <> 0, " ", InStr(nn1$, "-") = 0, "-"): Mul$ = Trim$(nn1$): Exit Function


If Left$(nn1$, 1) = "-" Xor Left$(nn2$, 1) = "-" Then Neg$ = "-" Else Neg$ = ""

If IsGreater(n1$, n2$) = 2 Then nn1$ = n2$: nn2$ = n1$: n1$ = nn1$: n2$ = nn2$

If InStr(n1$, ".") <> 0 Or InStr(n2$, ".") <> 0 Then
If InStr(n1$, ".") = 0 Then n1$ = n1$ + ".0"
If InStr(n2$, ".") = 0 Then n2$ = n2$ + ".0"
If InStr(n1$, ".") > InStr(n2$, ".") Then n2$ = String$(InStr(n1$, ".") - InStr(n2$, "."), "0") + n2$ Else n1$ = String$(InStr(n2$, ".") - InStr(n1$, "."), "0") + n1$
If Len(n1$) - InStr(n1$, ".") > Len(n2$) - InStr(n2$, ".") Then n2$ = n2$ + String$((Len(n1$) - InStr(n1$, ".")) - (Len(n2$) - InStr(n2$, ".")), "0") Else n1$ = n1$ + String$((Len(n2$) - InStr(n2$, ".")) - (Len(n1$) - InStr(n1$, ".")), "0")
Stor = Len(n1$) - InStr(n1$, ".")
If InStr(n1$, ".") <> 0 Then n1$ = Left$(n1$, InStr(n1$, ".") - 1) + Right$(n1$, (Len(n1$) - InStr(n1$, ".")))
If InStr(n2$, ".") <> 0 Then n2$ = Left$(n2$, InStr(n2$, ".") - 1) + Right$(n2$, (Len(n2$) - InStr(n2$, ".")))
Else
If Len(n1$) > Len(n2$) Then n2$ = String$(Len(n1$) - Len(n2$), "0") + n2$ Else n1$ = String$(Len(n2$) - Len(n1$), "0") + n1$
End If


If InStr(nn1$, ".") <> 0 Or InStr(nn2$, ".") <> 0 Then
If InStr(nn1$, ".") = 0 Then nn1$ = nn1$ + ".0"
If InStr(nn2$, ".") = 0 Then nn2$ = nn2$ + ".0"

Stor = (Len(nn1$) - InStr(nn1$, ".")) + (Len(nn2$) - InStr(nn2$, "."))
If InStr(nn1$, ".") <> 0 Then nn1$ = Left$(nn1$, InStr(nn1$, ".") - 1) + Right$(nn1$, (Len(nn1$) - InStr(nn1$, ".")))
If InStr(nn2$, ".") <> 0 Then nn2$ = Left$(nn2$, InStr(nn2$, ".") - 1) + Right$(nn2$, (Len(nn2$) - InStr(nn2$, ".")))
End If

For q1 = Len(nn2$) To 1 Step -1
ccc$ = String$(Len(nn2$) - q1, "0")
For q2 = Len(nn1$) To 1 Step -1
mmm$ = RTrim$(LTrim$(Str$((Val(Mid$(nn1$, q2, 1)) * Val(Mid$(nn2$, q1, 1))) + Rmd)))
Rmd = Val(Left$(mmm$, Len(mmm$) - 1)): mmm$ = Right$(mmm$, 1)
ccc$ = mmm$ + ccc$
Next q2
ccc$ = LTrim$(RTrim$(Str$(Rmd))) + ccc$
tt$ = Add$(tt$, ccc$)
Rmd = 0
Next q1
If Stor <> 0 Then tt$ = Left$(tt$, Len(tt$) - Stor) + "." + Right$(tt$, Stor)

Mul$ = Neg$ + tt$
End Function

Function Pwr$(n1$, n2$)
nz1$ = n1$
nz2$ = n1$
gg$ = n2$
Do
nz1$ = RemoveZero$(Mul$(nz1$, nz2$))
gg$ = RemoveZero$(Subt$(gg$, "1"))
Loop Until RemoveZero$(gg$) = "1"
Pwr$ = RemoveZero$(nz1$)
End Function

Function RemoveSpace$(t$)
For q = 1 To Len(t$)
If Mid$(t$, q, 1) = " " Then Else dd$ = dd$ + Mid$(t$, q, 1)
Next q
RemoveSpace$ = dd$
End Function

Function RemoveZero$(n1$)
Neg = InStr(n1$, "-")
If InStr(n1$, ".") = 0 Then ddd = Len(n1$) Else ddd = InStr(n1$, ".")
For q = 1 + Neg To ddd
If Mid$(n1$, q, 1) <> "0" Then Exit For
Next q
If Neg <> 0 Then Nx$ = "-" Else Nx$ = ""
If Right$(n1$, Len(n1$) - q + 1) = "" Then Rz$ = "0" Else Rz$ = Right$(n1$, Len(n1$) - q + 1)
If InStr(rx$, ".") = 0 Then RemoveZero$ = Nx$ + Rz$: Exit Function
For q = Len(Rz$) To InStr(Rz$, ".") Step -1
If Mid$(Rz$, q, 1) <> "0" Then Exit For
Next q
RemoveZero$ = Nx$ + Left$(Rz$, q)

End Function

Function Solve$(oe$, Meth)
e$ = Trim$(RemoveSpace$(oe$))
Do
m = InStr(e$, "^")
If m = 0 Then m = InStr(e$, "*")
If m = 0 Then m = InStr(e$, "/")
If m = 0 Then m = InStr(e$, "+"): dd = 12
If m = 0 Then m = InStr(e$, "-"): dd = 12
If m = 1 And dd = 12 Then m = 0
dd = 0
If m = 0 Then GoTo Solved
For q = 1 To m - 1
If LTrim$(RTrim$(Str$(Val(Mid$(e$, m - q, 1))))) <> Mid$(e$, m - q, 1) And Mid$(e$, m - q, 1) <> "." And (q = 1 And Left$(e$, 1) <> "-") Then Exit For
Next q
For q1 = m - 1 To Len(e$)
If LTrim$(RTrim$(Str$(Val(Mid$(e$, m + q1, 1))))) <> Mid$(e$, m + q1, 1) And Mid$(e$, m + q1, 1) <> "." Then Exit For
Next q1
eq$ = Mid$(e$, m - q + 1, (m - q) - 1 + (q1 + m))
'MSGBOX e$ + ", " + eq$ + STR$(q) + STR$(q1)
'k$ = (eq$)
e$ = Left$(e$, m - q) + SolveSimple$(eq$, Meth) + Mid$(e$, q1 + m, Len(e$))
Solved:
Loop Until m = 0
Solve$ = e$
End Function

Function SolveSimple$(equ$, Meth)
If Meth = 0 Then
If InStr(equ$, "^") <> 0 Then z1$ = Trim$(Mid$(equ$, 1, InStr(equ$, "^") - 1)): z2$ = Trim$(Mid$(equ$, InStr(equ$, "^") + 1, Len(equ$) - InStr(equ$, "^"))): SolveSimple$ = RemoveZero$(Pwr$(z1$, z2$)): Exit Function
If InStr(equ$, "*") <> 0 Then z1$ = Trim$(Mid$(equ$, 1, InStr(equ$, "*") - 1)): z2$ = Trim$(Mid$(equ$, InStr(equ$, "*") + 1, Len(equ$) - InStr(equ$, "*"))): SolveSimple$ = RemoveZero$(Mul$(z1$, z2$)): Exit Function
If InStr(equ$, "/") <> 0 Then z1$ = Trim$(Mid$(equ$, 1, InStr(equ$, "/") - 1)): z2$ = Trim$(Mid$(equ$, InStr(equ$, "/") + 1, Len(equ$) - InStr(equ$, "/"))): SolveSimple$ = RemoveZero$(Div$(z1$, z2$)): Exit Function
If InStr(equ$, "+") <> 0 Then z1$ = Trim$(Mid$(equ$, 1, InStr(equ$, "+") - 1)): z2$ = Trim$(Mid$(equ$, InStr(equ$, "+") + 1, Len(equ$) - InStr(equ$, "+"))): SolveSimple$ = RemoveZero$(Add$(z1$, z2$)): Exit Function
If InStr(equ$, "-") <> 0 Then z1$ = Trim$(Mid$(equ$, 1, InStr(equ$, "-") - 1)): z2$ = Trim$(Mid$(equ$, InStr(equ$, "-") + 1, Len(equ$) - InStr(equ$, "-"))): SolveSimple$ = RemoveZero$(Subt$(z1$, z2$)): Exit Function
Else
If InStr(equ$, "^") <> 0 Then z1 = Val(Mid$(equ$, 1, InStr(equ$, "^") - 1)): z2 = Val(Mid$(equ$, InStr(equ$, "^") + 1, Len(equ$) - InStr(equ$, "^"))): SolveSimple$ = Trim$(Str$(z1 ^ z2)): Exit Function
If InStr(equ$, "*") <> 0 Then z1 = Val(Mid$(equ$, 1, InStr(equ$, "*") - 1)): z2 = Val(Mid$(equ$, InStr(equ$, "*") + 1, Len(equ$) - InStr(equ$, "*"))): SolveSimple$ = Trim$(Str$(z1 * z2)): Exit Function
If InStr(equ$, "/") <> 0 Then z1 = Val(Mid$(equ$, 1, InStr(equ$, "/") - 1)): z2 = Val(Mid$(equ$, InStr(equ$, "/") + 1, Len(equ$) - InStr(equ$, "/"))): SolveSimple$ = Trim$(Str$(z1 / z2)): Exit Function
If InStr(equ$, "+") <> 0 Then z1 = Val(Mid$(equ$, 1, InStr(equ$, "+") - 1)): z2 = Val(Mid$(equ$, InStr(equ$, "+") + 1, Len(equ$) - InStr(equ$, "+"))): SolveSimple$ = Trim$(Str$(z1 + z2)): Exit Function
If InStr(equ$, "-") <> 0 Then z1 = Val(Mid$(equ$, 1, InStr(equ$, "-") - 1)): z2 = Val(Mid$(equ$, InStr(equ$, "-") + 1, Len(equ$) - InStr(equ$, "-"))): SolveSimple$ = Trim$(Str$(z1 - z2)): Exit Function

End If
End Function

Function Subt$(nnn1$, nnn2$)
n1$ = nnn1$: n2$ = nnn2$

If (InStr(n2$, "-") <> 0 And InStr(n1$, "-") = 0) Then Subt$ = Add$(n1$, Right$(n2$, Len(n2$) - InStr(n2$, "-"))): Exit Function
If (InStr(n1$, "-") <> 0 And InStr(n2$, "-") = 0) Then Subt$ = "-" + Add$(n2$, Right$(n1$, Len(n1$) - InStr(n1$, "-"))): Exit Function
If (InStr(n1$, "-") <> 0 And InStr(n2$, "-") <> 0) Then n1$ = Right$(n1$, Len(n2$) - InStr(n2$, "-")): n2$ = Right$(n2$, Len(n2$) - InStr(n2$, "-")): IsAnsNeg = 1

If IsGreater(n1$, n2$) = 2 Then Neg = (1 + IsAnsNeg) Mod 2: dd1$ = n1$: dd2$ = n2$: n1$ = dd2$: n2$ = dd1$

If InStr(n1$, "-") <> 0 And InStr(n2$, "-") <> 0 Then Neg = 1: n1$ = Right$(n1$, Len(n1$) - InStr(n1$, "-")): n2$ = Right$(n2$, Len(n2$) - InStr(n2$, "-")): Subt$ = "-" + Add$(n1$, n2$): Exit Function



If InStr(n1$, ".") <> 0 Or InStr(n2$, ".") <> 0 Then
If InStr(n1$, ".") = 0 Then n1$ = n1$ + ".0"
If InStr(n2$, ".") = 0 Then n2$ = n2$ + ".0"
If InStr(n1$, ".") > InStr(n2$, ".") Then n2$ = String$(InStr(n1$, ".") - InStr(n2$, "."), "0") + n2$ Else n1$ = String$(InStr(n2$, ".") - InStr(n1$, "."), "0") + n1$
If Len(n1$) - InStr(n1$, ".") > Len(n2$) - InStr(n2$, ".") Then n2$ = n2$ + String$((Len(n1$) - InStr(n1$, ".")) - (Len(n2$) - InStr(n2$, ".")), "0") Else n1$ = n1$ + String$((Len(n2$) - InStr(n2$, ".")) - (Len(n1$) - InStr(n1$, ".")), "0")
Stor = Len(n1$) - InStr(n1$, ".")
If InStr(n1$, ".") <> 0 Then n1$ = Left$(n1$, InStr(n1$, ".") - 1) + Right$(n1$, (Len(n1$) - InStr(n1$, ".")))
If InStr(n2$, ".") <> 0 Then n2$ = Left$(n2$, InStr(n2$, ".") - 1) + Right$(n2$, (Len(n2$) - InStr(n2$, ".")))
Else
If Len(n1$) > Len(n2$) Then n2$ = String$(Len(n1$) - Len(n2$), "0") + n2$ Else n1$ = String$(Len(n2$) - Len(n1$), "0") + n1$
End If


For q = Len(n1$) To 1 Step -1

If Val(Mid$(n1$, q, 1)) < Val(Mid$(n2$, q, 1)) Then
    Num1 = Val(Mid$(n1$, q, 1)) + 10
    l = 0
    Do
        l = l + 1
        Br$ = Mid$(n1$, q - l, 1)
        If Br$ = "0" Then Mid$(n1$, q - l, 1) = "9"
    Loop Until Br$ <> "0"
    Mid$(n1$, q - l, 1) = RTrim$(LTrim$(Str$(Val(Mid$(n1$, q - l, 1)) - 1)))
Else
    Num1 = Val(Mid$(n1$, q, 1))
End If
sc = Num1 - Val(Mid$(n2$, q, 1))
cc$ = Trim$(Str$(sc)) + cc$
Next q
If Neg = 1 Then cc$ = "-" + cc$
If Stor <> 0 Then cc$ = Left$(cc$, Len(cc$) - Stor) + "." + Right$(cc$, Stor)

Subt$ = cc$

End Function

Function Switch$(tof1, r1$, tof2, r2$)
If tof1 = -1 Then Switch$ = r1$
If tof2 = -1 Then Switch$ = r2$
End Function

Function Trim$(t$)
Trim$ = LTrim$(RTrim$(t$))
End Function

