Speaking of end of line conventions, here's issue 1472 :) CrLfStream fails horribly currently, since the UTF8-converters latin1map never gets initialized. detectLineEndConvention gets called before converter is installed, and later on, in MultiByteFileStream>>open: forWrite: , converter lineendings never gets set (and latin1map initialized) if lineEndConvention isn't nil. Alternatives: 1. ensure lineEndConvention installation: MultiByteFileStream>>open: fileName forWrite: writeMode | result | result := super open: fileName forWrite: writeMode. result ifNotNil: [ converter ifNil: [converter := UTF8TextConverter new]. lineEndConvention ifNil: [ self detectLineEndConvention ] ifNotNil: [self installLineEndConventionInConverter] ]. ^result 2. Use converter: instead, since that installs the lineEndConvention: MultiByteFileStream>>open: fileName forWrite: writeMode | result | result := super open: fileName forWrite: writeMode. result ifNotNil: [ converter ifNil: [self converter: UTF8TextConverter new]. lineEndConvention ifNil: [ self detectLineEndConvention ] ]. ^result Ironically, if no lineEndConvention is defined, it will default to the same line-ending as you would get with a CrLfStream anyways :P I'm submitting a slice with approach 2 to inbox. Cheers, Henry