Assignment to a lexical scalar is often optimised away; for example in C, the assign operator is optimised away and the add operator writes its result directly to C<$x>. Various bugs related to this optimisation have been fixed. Certain operators on the right-hand side would sometimes fail to assign the value at all or assign the wrong value, or would call STORE twice or not at all on tied variables. The operators affected were C<$foo++>, C<$foo-->, and C<-$foo> under C, C, C and C.