|  | @@ -210,14 +210,19 @@ class MP4(_MutagenTagInterface):
 | 
	
		
			
				|  |  |          self._mutagen_file.tags['----:' + tag_label] = [tag]
 | 
	
		
			
				|  |  |          return tag
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @staticmethod
 | 
	
		
			
				|  |  | +    def _int_to_freeform_data(integer: int) -> bytes:
 | 
	
		
			
				|  |  | +        # "a signed big-endian integer with length one of { 1,2,3,4,8 } bytes"
 | 
	
		
			
				|  |  | +        # TODO exclude 5-7, 9-
 | 
	
		
			
				|  |  | +        byte_len = max((integer.bit_length() + 8) // 8, 1)
 | 
	
		
			
				|  |  | +        return integer.to_bytes(byte_len, byteorder='big', signed=True)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      def set_free_int(self, tag_label, data):
 | 
	
		
			
				|  |  |          assert isinstance(data, int)
 | 
	
		
			
				|  |  |          return self._set_free(
 | 
	
		
			
				|  |  |              tag_label=tag_label,
 | 
	
		
			
				|  |  | -            # "a signed big-endian integer with length one of { 1,2,3,4,8 } bytes"
 | 
	
		
			
				|  |  |              dataformat=mutagen.mp4.AtomDataType.INTEGER,
 | 
	
		
			
				|  |  | -            # TODO set byte length properly
 | 
	
		
			
				|  |  | -            data=data.to_bytes(1, byteorder='big', signed=True),
 | 
	
		
			
				|  |  | +            data=self._int_to_freeform_data(data),
 | 
	
		
			
				|  |  |          )
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def _set_free_uuid(self, tag_label, data):
 |