Tag 44

Imported from previous forum

From the FIX 4.0 specification it looks like valid values for tag 44 are:

0 - 99999999.9999

However, this field is a float and float fields needs to accommodate up to fifteen significant digits.

Should this field contain a maximum of 13 or 15 digits?

In my opinion the 0 - 99999999.9999 restriction has been set since it would cover most of the real world scenarios. Although the type of field is float, both stop price and price tags have this range. However, do not be confused that there is a restriction of post-decimal places to 4. I have never come across situations where the security price would exceed 99999999.9999 (maybe a possiblity in economies where inflation sky rockets!)

From the FIX 4.0 specification it looks like valid values for tag 44 are:

  • 99999999.9999

However, this field is a float and float fields needs to accommodate up
to fifteen significant digits.

Should this field contain a maximum of 13 or 15 digits?

[ original email was from Ryan Pierce - rpierce@taltrade.com ]
> From the FIX 4.0 specification it looks like valid values for tag 44 are:

  • 99999999.9999

However, this field is a float and float fields needs to accommodate up
to fifteen significant digits.

Should this field contain a maximum of 13 or 15 digits?

You’ve stumbled across a bug in the FIX 4.0 and FIX 4.1 (pre-errata) specs.

The FIX 4.1 errata appended “(number of decimal places may vary and not limited to four)”. FIX 4.2 eliminated all reference to “99999999.9999”.

The current FIX 4.4 spec with errata says:

“All float fields must accommodate up to fifteen significant digits. The number of decimal places used should be a factor of business/market needs and mutual agreement between counterparties.”

The way I interpret the 15 signifiant digit requirement is that this is the minimum level of precision a FIX engine is required to support; it’s certainly not a maximum level of precision, and more than 15 significant digits shouldn’t necessarily trigger a rejection. The origins of the restriction are apocryphal, but I’ve heard that it was chosen because a C “double” had 15 significant digits on most platforms while a C “float” only had 6 or 7.