Hi,
as the title tells,

DataStream>>writeInteger: anInteger
    "PRIVATE -- Write the contents of a SmallInteger."

    byteStream nextInt32Put: anInteger    "signed!!!!!"

Which strategy do we adopt?
I suggest using a fake LargeInteger...

    objectToStore := (self objectIfBlocked: anObject) objectForDataStream: self.
    objectToStore == anObject ifFalse: [typeID := self typeIDFor: objectToStore].

Of course, we must also care of LargeInteger materialization in 64bits spur.
I'm going to fix it unless someone has a better idea.

Nicolas