|  | @@ -220,7 +220,7 @@ namespace Emby.Server.Implementations.Library
 | 
	
		
			
				|  |  |              var hasRuntime = runtimeTicks > 0;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              // If a position has been reported, and if we know the duration
 | 
	
		
			
				|  |  | -            if (positionTicks > 0 && hasRuntime && !(item is AudioBook))
 | 
	
		
			
				|  |  | +            if (positionTicks > 0 && hasRuntime && !(item is AudioBook) && !(item is Book))
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  var pctIn = decimal.Divide(positionTicks, runtimeTicks) * 100;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -239,7 +239,7 @@ namespace Emby.Server.Implementations.Library
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      // Enforce MinResumeDuration
 | 
	
		
			
				|  |  |                      var durationSeconds = TimeSpan.FromTicks(runtimeTicks).TotalSeconds;
 | 
	
		
			
				|  |  | -                    if (durationSeconds < _config.Configuration.MinResumeDurationSeconds && !(item is Book))
 | 
	
		
			
				|  |  | +                    if (durationSeconds < _config.Configuration.MinResumeDurationSeconds)
 | 
	
		
			
				|  |  |                      {
 | 
	
		
			
				|  |  |                          positionTicks = 0;
 | 
	
		
			
				|  |  |                          data.Played = playedToCompletion = true;
 |