diff --git a/lib/snf/src/bot.rs b/lib/snf/src/bot.rs
index ffc3258..3712341 100644
--- a/lib/snf/src/bot.rs
+++ b/lib/snf/src/bot.rs
@@ -150,7 +150,7 @@ impl<R:BinReaderExt> StreamableBot<R>{
 	}
 }
 
-const MAX_BLOCK_SIZE:u64=64*1024;//64 kB
+const MAX_BLOCK_SIZE:usize=64*1024;//64 kB
 pub fn write_bot<W:BinWriterExt>(mut writer:W,instructions:impl IntoIterator<Item=TimedPhysicsInstruction>)->Result<(),Error>{
 	// decide which instructions to put in which segment
 	// write segment 1 to block 1
@@ -168,10 +168,13 @@ pub fn write_bot<W:BinWriterExt>(mut writer:W,instructions:impl IntoIterator<Ite
 	let mut segment_header_infos=Vec::new();
 	let mut raw_segments=std::io::Cursor::new(Vec::new());
 
-	let mut last_time=Time::ZERO;
-	let mut last_position=raw_segments.position();
+	// block info
+	let mut start_time=Time::ZERO;
+	let mut start_position=raw_segments.position() as usize;
 	let mut instruction_count=0;
 
+	let mut last_position=start_position;
+
 	let mut iter=instructions.into_iter();
 
 	macro_rules! collect_instruction{
@@ -180,24 +183,25 @@ pub fn write_bot<W:BinWriterExt>(mut writer:W,instructions:impl IntoIterator<Ite
 			let instruction_writable:newtypes::physics::TimedInstruction=$instruction.try_into().map_err(Error::InstructionConvert)?;
 			instruction_writable.write_le(&mut raw_segments).map_err(Error::InstructionWrite)?;
 			instruction_count+=1;
-			let position=raw_segments.position();
+			let position=raw_segments.position() as usize;
 			// exceeds max block size
 			if MAX_BLOCK_SIZE<position-last_position{
 				segment_header_infos.push(SegmentHeaderInfo{
-					time:last_time,
+					time:start_time,
 					instruction_count,
-					range:position as usize..last_position as usize,
+					range:start_position..last_position,
 				});
+				start_position=last_position;
 				instruction_count=0;
-				last_position=position;
-				last_time=time;
+				start_time=time;
 			}
+			last_position=position;
 		}
 	}
 
 	// unroll one loop iteration to grab the starting time
 	if let Some(instruction)=iter.next(){
-		last_time=instruction.time;
+		start_time=instruction.time;
 		collect_instruction!(instruction);
 	}
 
@@ -205,13 +209,14 @@ pub fn write_bot<W:BinWriterExt>(mut writer:W,instructions:impl IntoIterator<Ite
 		collect_instruction!(instruction);
 	}
 	//last block, whatever size it happens to be
-	let position=raw_segments.position();
-	segment_header_infos.push(SegmentHeaderInfo{
-		time:last_time,
-		instruction_count,
-		range:position as usize..last_position as usize,
-	});
-
+	{
+		let final_position=raw_segments.position() as usize;
+		segment_header_infos.push(SegmentHeaderInfo{
+			time:start_time,
+			instruction_count,
+			range:start_position..final_position,
+		});
+	}
 	// drop cursor
 	let raw_segments=raw_segments.into_inner();