anchor.diff:      Grace = 5000, % give time for a small scan to finish before timeout counter applies
       {ok, TRef} = timer:send_after(?IDLE_TIMEOUT + Grace, State#state.self, port_idle),
       Exe = ?CONFVAL({library, taglib_driver}, State#state.exe),
  -    Port = open_port({spawn, Exe}, [binary, {packet, 4}, use_stdio]),
  +    Port = open_port({spawn, Exe}, [binary, {packet, 4}, use_stdio, exit_status]),
       State#state{port = Port, tref=TRef }.
   
   readtags(File, Port) ->
  
positive.code:                     {reply, ok, State1};
  				{error, scanner_crashed} -> {reply, {error, scanner_crashed}, State#state{port=undefined}};
  				{error, scanner_bug}     -> {reply, {error, scanner_bug}, State#state{port=undefined}};
                  {error, R} ->
                      {reply, {error, R}, State1}
              end;
  
negative.code:     ?LOG(error, "Scanner terminated: ~p",[Reason]),
      {noreply, State#state{port=undefined}};
  
  handle_info(Msg, State) -> 
  	?LOG(info,"UNHANDLED MSG: ~p", [Msg]),
  	{noreply, State}.
  
  terminate(_Reason, #state{port = Port} = _State) when is_port(Port) -> 
  	(catch port_close(Port)), ok;
  