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.
$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)