James,
I just whipped up a solution and PMed it to you. Let me know if you'll accept it (being slightly late). I hope you'll take it, cause some of the coding in there was pretty slick =D
Edit: on second thought, seeing as how all the other entries are available publicly, I'll just post mine here. (I do not currently have access to a link cable.)
:Prompt N
:"_→Str0
:For(X,0,int(log(N
:10fPart(N/10→Z
:While Z
:sum({4.1,4.1,9.2}(Z={4,5,9→T
:sub("IVXLCDMvxlcdmni",2X+10fPart(T)+1,1)+Str0→Str0
:abs(Z-1-int(T→Z
:End
:int(N/10→N
:End
:Str0
The string "IVXLCDMvxlcdmni" specifies the letters used in the numerals. The longer you make the string, the more digits the program can handle. To satisfy the program requirements, the string must have at least as many characters as "IVXLCDMvx"; everything else is extra digit support.