def _apply_signed_threshold(value, min_thr=None, max_thr=None):
	"""
	Apply threshold on signed value.
	
	usage examples :
		>>> _apply_signed_threshold(0.678, min_thr=0.5)
		0.5
		>>> _apply_signed_threshold(-0.678, min_thr=0.5)
		-0.5
		>>> _apply_signed_threshold(0.678, max_thr=2.0)
		0.678
		>>> _apply_signed_threshold(20.678, max_thr=2.0)
		2.0
		>>> _apply_signed_threshold(-20, max_thr=2.0)
		-2.0
	
	:param float value: value to threshold
	:param float min_thr: nearest threshold from 0
	:param float max_thr: farthest threshold from 0
	:return: thresholded value
	:rtype float:
	"""
	sat_val = value
	
	if min_thr is not None:
		if sat_val < 0:
			sat_val = max(sat_val, -min_thr)
		else:
			sat_val = min(sat_val, min_thr)
	if max_thr is not None:
		if sat_val < 0:
			sat_val = max(sat_val, -max_thr)
		else:
			sat_val = min(sat_val, max_thr)
			
	return sat_val