So you understand what this does, if you input "67" for example, the output will be "sixty seven".  I didn't bother adding dashes because, they can become tricky and subjective.  If anyone would like to try and shorten this code, please do, as I would benefit from that.
 
 
This can be very useful to simply import into your game and output numbers as text to the user for a better GUI.
 
 
	  | Turing: | 	 		  
module IntToWords
     export Convert
     function stOnes  (digit  : int) : string
        case digit  of
            label 1 :
                result "one"
            label 2 :
                result "two"
            label 3 :
                result "three"
            label 4 :
                result "four"
            label 5 :
                result "five"
            label 6 :
                result "six"
            label 7 :
                result "seven"
            label 8 :
                result "eight"
            label 9 :
                result "nine"
            label 0 :
                result "zero"
        end case
    end stOnes
     function stTeens  (digit  : int) : string
        case digit  of
            label 4,  6,  7,  9 :
                result stOnes  (digit ) +  "teen"
            label 1 :
                result "eleven"
            label 2 :
                result "twelve"
            label 3 :
                result "thirteen"
            label 5 :
                result "fifteen"
            label 8 :
                result "eighteen"
            label 0 :
                result "ten"
        end case
    end stTeens
     function stTens  (digit  : int) : string
        case digit  of
            label 4,  6,  7,  9 :
                result stOnes  (digit ) +  "ty"
            label 2 :
                result "twenty"
            label 3 :
                result "thirty"
            label 5 :
                result "fifty"
            label 8 :
                result "eighty"
        end case
    end stTens
     function stNumOfDigits  (digit  : int) : string
        case digit  of
            label 0 :
                result stOnes  (digit )
            label 1 :
                result stOnes  (digit )
            label 2 :
                result stTeens  (digit )
            label 3 :
                result "hundred"
            label 4 :
                result "thousand"
            label 7 :
                result "million"
            label 10 :
                result "billion"
        end case
    end stNumOfDigits
     %Sub-functiom
    function stLessThan100  (iNumber  : int) : string
        var stOutput  := ""
        if iNumber <  100 and iNumber >  0 then
            if iNumber <  10 then
                stOutput + = stOnes  (iNumber )
                result stOutput
             end if
            if iNumber <  20 then
                stOutput + = stTeens  (iNumber  mod 10)
                result stOutput
             end if
            if iNumber <  100 then
                stOutput + = stTens  (iNumber  div 10)
                if iNumber  mod 10 ~ = 0 then
                    stOutput + = " " + stOnes  (iNumber  mod 10)
                end if
                result stOutput
             end if
        end if
    end stLessThan100
     function stLessThan1000  (iNumber  : int) : string
        var stOutput  := ""
        if iNumber <  1000 and iNumber >=  100 then
            stOutput + = stOnes  (iNumber  div 100)
            stOutput + = " " + stNumOfDigits  (3)
            if iNumber  mod 100 ~ = 0 then
                stOutput + = " and " + stLessThan100  (iNumber  mod 100)
            end if
            result stOutput
         elsif iNumber >  0 and iNumber <  100 then
            result stLessThan100  (iNumber )
        end if
    end stLessThan1000
     function stLessThan1000000  (iNumber  : int) : string
        var stOutput  := ""
        if iNumber <  1000000 and iNumber >=  1000 then
            stOutput + = stLessThan1000  (iNumber  div 1000)
            stOutput + = " " + stNumOfDigits  (4)
            if iNumber  mod 1000 ~ = 0 then
                stOutput + = ", " + stLessThan1000  (iNumber  mod 1000)
            end if
            result stOutput
         elsif iNumber >  0 and iNumber <  100 then
            result stLessThan100  (iNumber )
        elsif iNumber >=  100 and iNumber <  1000 then
            result stLessThan1000  (iNumber )
        end if
    end stLessThan1000000
     function stLessThan1000000000  (iNumber  : int) : string
        var stOutput  := ""
        if iNumber <  1000000000 and iNumber >=  1000000 then
            stOutput + = stLessThan1000000  (iNumber  div 1000000)
            stOutput + = " " + stNumOfDigits  (7)
            if iNumber  mod 1000000 ~ = 0 then
                stOutput + = ", " + stLessThan1000000  (iNumber  mod 1000000)
            end if
            result stOutput
         elsif iNumber >  0 and iNumber <  100 then
            result stLessThan100  (iNumber )
        elsif iNumber >=  100 and iNumber <  1000 then
            result stLessThan1000  (iNumber )
        elsif iNumber >=  1000 and iNumber <  1000000 then
            result stLessThan1000000  (iNumber )
        end if
    end stLessThan1000000000
     %Main Function
    function Convert  (iOriginalNumber  : int) : string
        var stOutput  : string := ""
        var iNumber  : int := iOriginalNumber
         if iNumber <  0 then
            iNumber  := abs (iNumber )
            stOutput + = "negative "
        end if
        if iNumber  = 0 then
            stOutput + = stOnes  (iNumber )
            result stOutput
         end if
        if iNumber <  100 then
            stOutput + = stLessThan100  (iNumber )
            result stOutput
         end if
        if iNumber <  1000 then
            stOutput + = stLessThan1000  (iNumber )
            result stOutput
         end if
        if iNumber <  1000000 then
            stOutput + = stLessThan1000000  (iNumber )
            result stOutput
         end if
        if iNumber <  1000000000 then
            stOutput + = stLessThan1000000000  (iNumber )
            result stOutput
         end if
        stOutput + = stLessThan100  (iNumber  div 1000000000)
        stOutput + = " " + stNumOfDigits  (10)
        %Error.Halt ("stOutput= " + stOutput + ", iNumber mod 1000000000= " + intstr (iNumber mod 1000000000))
        if iNumber  mod 1000000000 ~ = 0 then
            stOutput + = ", " + stLessThan1000000000  (iNumber  mod 1000000000)
        end if
        result stOutput
     end Convert
 end IntToWords
 setscreen("text")
var i  : int
% Example implementation of the function.
for k  : 1 ..  10
    randint(i, - maxint div 2,  maxint div 2)
    put i
     put IntToWords.Convert  (i )
end for
  | 	 
  |