That is curious.
In 2012, even entmod doesn't work. It appears to work - the returned list has the modified 41 value, but nothing changes on the entity:
(setq
ent (car (entsel))
elist (entget ent)
test (entmod (subst (cons 41 (getdist)) (assoc 41 elist) elist))
)
(princ (assoc 41 elist))
(princ (assoc 41 test))
(princ (assoc 41 (entget ent)))
((-1 . <Entity name: 7ffff60f660>) (0 . "MTEXT") (330 . <Entity name: 7ffff6039f0>) (5 . "509EE") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "20-LITE") (100 . "AcDbMText") (10 31.9157 -4.75434 0.0) (40 . 0.09375) (41 . 2.56575) (46 . 0.0) (71 . 1) (72 . 5) (1 . "This is a test") (7 . "Standard") (210 0.0 0.0 1.0) (11 1.0 0.0 0.0) (42 . 0.629464) (43 . 0.25) (50 . 0.0) (73 . 1) (44 . 1.0))
(41 . 0.821385)(41 . 0.821385)
(41 . 2.56575)(41 . 2.56575)
(41 . 2.56575)(41 . 2.56575)
So entmod accepts the change, the value changes, but there is no visible change in the object. Even the properties palette still shows the old value. I wonder if the width value is stored in xdata or a dictionary...