I just reversed the way you map IPAC type declaration to python types when reading a table. 
https://github.com/astropy/astropy/blob/master/astropy/io/ascii/ipac.py#L98
When reading `long` and  `int` both get mapped to the same python type. The IPAC definition does not really say what the mean, when they say "float". (32 bit or 64 bit?) so maybe it's safer to  always write in the higher data type.