isnum2()
{
	case "$1" in
	'[-+]' | '')	return 1;;	# empty or bare `-' or `+'
	[-+]*[!0-9]*)	return 1;;	# non-digit with leading sign
	[-+]*)		return 0;;	# OK
	*[!0-9]*)	return 1;;	# non-digit
	*)		return 0;;	# OK
	esac
}

# this one handles floating point
isnum3()
{
	case "$1" in
	'')		return 1;;	# empty
	*[!0-9.+-]*)	return 1;;	# non-digit, +, -, or .
	*?[-+]*)	return 1;;	# sign as second or later char
	*.*.*)		return 1;;	# multiple decimal points
	*)		return 0;;	# OK
	esac
}
