It turns out my data conversion was working and it was the printf() statements that were giving me unexpected results.

It appears that in Lite-C float values are not automatically promoted to double when they are passed as arguments. The fix was to add an explicit cast to double (or var) when printing a float value, as in:

Code
float f = 1.1;

printf("f=%f\n", f);           // gives an unexpected result
printf("f=%f\n", (double) f);  // prints 1.1
printf("f=%f\n", (var) f);     // prints 1.1