diff --git a/src/prolog/machine/streams.rs b/src/prolog/machine/streams.rs index 9e6ea491..6308017d 100644 --- a/src/prolog/machine/streams.rs +++ b/src/prolog/machine/streams.rs @@ -688,9 +688,14 @@ impl MachineState { return Err(self.open_past_eos_error(stream.clone(), caller, arity)); } EOFAction::EOFCode => { - let end_of_stream = self.heap.to_unifiable( - HeapCellValue::Atom(clause_name!("end_of_file"), None) - ); + let end_of_stream = + if stream.options.stream_type == StreamType::Binary { + Addr::Fixnum(-1) + } else { + self.heap.to_unifiable( + HeapCellValue::Atom(clause_name!("end_of_file"), None) + ) + }; stream.set_past_end_of_stream(); Ok(self.unify(result, end_of_stream))