anchor.diff:  		    {EndConf,TSReturn,FWReturn} =
   			case Return of
   			    {E,TCError} when E=='EXIT' ; E==failed ->
  +				ModLoc = mod_loc(Loc),
   				fw_error_notify(Mod, Func, NewConf1,
  -						TCError, mod_loc(Loc)),
  -				{[{tc_status,{failed,TCError}}|NewConf1],
  +						TCError, ModLoc),
  +				{[{tc_status,{failed,TCError}},
  +				  {tc_fail_loc,ModLoc}|NewConf1],
   				 Return,{error,TCError}};
   			    SaveCfg={save_config,_} ->
   				{[{tc_status,ok},SaveCfg|NewConf1],Return,ok};
   			    {skip_and_save,Why,SaveCfg} ->
   				Skip = {skip,Why},
  -				{[{tc_status,{skipped,Why}},{save_config,SaveCfg}|NewConf1],
  +				{[{tc_status,{skipped,Why}},
  +				  {save_config,SaveCfg}|NewConf1],
   				 Skip,Skip};
   			    {skip,Why} ->
   				{[{tc_status,{skipped,Why}}|NewConf1],Return,Return};
   			    _ ->
   				{[{tc_status,ok}|NewConf1],Return,ok}
   			end,
  -		    %% clear current state in controller loop
  -		    group_leader() ! {set_curr_conf,undefined},
   		    %% call user callback function if defined
   		    EndConf1 = user_callback(TCCallback, Mod, Func, 'end', EndConf),
  +		    %% update current state in controller loop
  +		    group_leader() ! {set_curr_conf,EndConf1},
   		    {FWReturn1,TSReturn1,EndConf2} =
   			case end_per_testcase(Mod, Func, EndConf1) of
   			    SaveCfg1={save_config,_} ->
  
positive.code: 		    case mod_loc(AbortLoc) of
  			{FwMod,FwFunc,framework} ->
  			    %% abort during framework call
  			    spawn_fw_call(FwMod,FwFunc,Pid,
  					  {framework_error,ErrorMsg},
  					  unknown,self(),Comment),
  			    run_test_case_msgloop(Ref,Pid,CaptureStdout,Terminate,
  
negative.code: 			    _ ->
  				{FWReturn,TSReturn,EndConf1}
  			end,
  		    %% clear current state in controller loop
  		    group_leader() ! {set_curr_conf,undefined},
  		    put(test_server_init_or_end_conf,undefined),
  		    case do_end_tc_call(Mod, Func, {FWReturn1,[EndConf2]}, TSReturn1) of
  			{failed,Reason} = NewReturn ->
  