Ok, obviously you solved it somehow that way. :-)
I just did a short test. And the scale is reflected as a factor (somehow) in transform.basis. It seems that Quat normalizes the vectors (to 0..1) and therefore resets the implicit scale back to (1,1,1).
Personally I find it a bit misleading that this isn't visibly shown in the "Matrix" in the Spatial Inspektor which seems always normalized.
Probably you can re-apply the scale in each assignment. I didn't test it but the changed assignment might look like this:
transform.basis = Basis(c).scaled(scale)