The effect for $envvar().name is that for positive numeric inputs the .name property is ignored, and for non-numeric input it returns the string itself, and is always $null when the input is '0'. Since .name has never worked correctly it shouldn't be a problem to change its behavior.

My environment variables list contains:

2nd item: 0=foobar
3rd item: 7=DEADBEEF12345678
7th item: COMPUTERNAME=name_of_device

//echo -a $envvar(2) vs $envvar(2).name and $envvar(2).value
result: 0 vs 0 and foobar
//echo -a $envvar(3) vs $envvar(3).name and $envvar(3).value
result: 7 vs 7 and DEADBEEF1234567
//echo -a $envvar(7) vs $envvar(7).name and $envvar(7).value
result: COMPUTERNAME vs COMPUTERNAME and name_of_device

(numeric input ignores .name)

//echo -a $envvar(0) vs $envvar(0).name and $envvar(0).value
result: 38 vs and

(can't find the name or value for item named '0')

//echo -a $envvar(COMPUTERNAME) vs $envvar(COMPUTERNAME).name and $envvar(COMPUTERNAME).value
result: name_of_device vs COMPUTERNAME and name_of_device

(Only benefit is fixing the case-sensitive string for $envvar(ComputerName).name

Recommended solution: $envvar().name should behave like $timer().name always does, where $envvar().name would return the Nth position of the string named in the input, regardless whether it is numeric or text, or returns $null if no such variablename exists. This would always allow the correct results from $envvar( $envvar(everything).name ) the same way that $timer( $timer(everything).name ) does.

Code
$envvar(COMPUTERNAME).name	now=COMPUTERNAME	new=7 (varname is 7th in the list)
$envvar(7).name			now=COMPUTERNAME	new=3 (varname is 3rd in the list)

$envvar(0).name			now=$null		new=2 (varname is 2nd in the list)
$envvar(2).name			now=0			new=$null (no such varname)
$envvar(3).name			now=7			new=$null (no such varname)