Hello HeelX,
OK! I understand now, You want a smooth function for 2d stuff simulating greater resolution than you use by mathematically pixel blend surrounding pixels to simulate the greater resolution. (sort of shader thingy, heh

)
Actually since it's hard to buy any monitor below 1280x1024 what low resolution are you aiming at since in a game you'd hardly recognize a single pixel move if you not running real low say 640x480 or something like that?
[ The more I think of it, if you have problem with smooth movements and have to lower the resolution to make the hardware to coop with it wouldn't a function like this drag the speed down to a crawl? And if you have sufficient hardware this function need to be switchable since above a certain resolution you'll never notice this behavior?
The only current low resolution applications I can imagine for the moment is TV PAL/NTSC and if so the hardware isn't the limit, setup two frame buffers and make a shader calculate the smoothing between them or something like that]
Old reply, still acceptable on or above 1024x768 resolution.
I would have done something like this... (Since you said you only move "some panels" not hundreds

)
PANEL* pan;
pan = ...;
var pan_x,pan_y;
pan_x += 0.1 + sin(total_ticks) * 0.1 * time_step;
pan_y += sin(total_ticks) * 0.5 * time_step;
pan->pos_y = integer(pan_x); // Actually the engine will do this by it self (type casting)
pan->pos_x = integer(pan_y);
Why?! Because this way you still will have control over how the actual position on screen will be, if this was a hard coded translation in the engine from var to int and a bad fraction part of your var makes it stutter you have no control over it anymore. In this way you can add more function rules that only change position if values have changed more than 0.xx since the xx last frame or neglect negative/positive movement if the next value will equal the current usw.
Currently with the code you presented for every iteration you loose some fractions of the "var" you put back to pan->pos_y and pos_x.
Yes!, It would be sleek to using var, real or whatever but since monitors still is stupid binary without sub pixels I think it's a bad idea, the more high abstraction levels you put into things the more confusion it adds when the result is not what you thought you would get out of it.
Regards
CJ