it looks like 21 digits is the cut-off for the number of digits you can have in the specification for fractional seconds. Any format with more than 21 digits for fractional seconds gets the following error:
[info] - test_millisecondAccuracy4 *** FAILED ***
[info] java.lang.Exception: Parse Error: Convert to Time (for xs:time): Failed to parse '3:30:38.0023452768910087634837' at character -1 .
[info] Schema context: element.time15 Location line 2174 column 200 in file:/home/jchab/NGF/dfdl/daffodil-test/target/scala-2.9.2/test-classes/edu.illinois.ncsa.daffodil/section05/simple_types/SimpleTypes.tdml
I know this isn't that big of a deal, but 21 digits seems somewhat arbitrary, and I was also wondering if we should include this in the spec somewhere.
See tests millisecondAccuracy3 and millisecondAccuracy4
Add / document in the Daffodil Wiki