Преобразование арабских чисел в римские

Как преобразовать арабские числа в римские?

Функция получает в качестве параметра любую десятичную величину и возвращает результат в виде строки, содержащей римские цифры.

function TForm1.DecToRoman(Decimal: Integer): String;
const
  Romans: array[1..13] of String = ('I', 'IV', 'V', 'IX', 'X', 'XL', 'L',
                                    'XC', 'C', 'CD', 'D', 'CM', 'M');
  Arabics: array[1..13] of Integer = (1, 4, 5, 9, 10, 40, 50,
                                      90, 100, 400, 500, 900, 1000);
var
  i: Integer;
begin
  result := '';
  for i := 13 downto 1 do
    while (Decimal >= Arabics[i]) do begin
      Decimal := Decimal - Arabics[i];
      result := result + Romans[i];
    end;
end;