LPARAMETER lcString LOCAL lnNum, lnDem * Pass the Decimal part only of the String ie. ".125" * If 64 is the largest denominator then .9921 is the * largest decimal that will return less than 1 lnDem = 64 && Largest Denominator to start with lnNum = ROUND((VAL(lcString) * lnDem), 0) && Calculate the Numerator * Reduce to lowest possible Denominator DO WHILE MOD(lnNum,2) = 0 AND MOD(lnDem,2) = 0 lnNum = lnNum / 2 lnDem = lnDem / 2 ENDDO RETURN ALLTRIM(STR(lnNum)) + "/" + ALLTRIM(STR(lnDem))+["]This and everything else I know is in my VFP Programmers Help File on my web site.