I still can't figure this out!

I made a small test app to get it done, but I just can't get it work! And I don't really see
why!
Here is the code: (also attached + media)
// Test app - Main.cpp
#include "DarkGDK.h"
int ScreenWidth = 800, ScreenHeight = 600, ScreenDepth = 32;
float DebugCamSpeed = 0.1f;
int object = 10, target = 20;
// functions
void DebugInput ( );
void DebugOutput ( );
int limb ( int id, char * name );
// main entry point
void DarkGDK ( void )
{
// setup
dbSyncOn ( );
dbSyncRate ( 0 );
dbHideMouse ( );
dbSetWindowPosition ( 0, 0 );
dbSetWindowTitle ( "Test" );
dbSetDisplayModeVSync ( ScreenWidth, ScreenHeight, ScreenDepth, 0 );
dbMaximizeWindow ( );
dbColorBackdrop ( 0 );
dbBackdropOn ( );
dbAutoCamOff ( );
dbPositionCamera ( 5, 7, -20 );
// model
dbLoadObject ( "DemoMan.x", object );
// target
float tx = 10, ty = 10, tz = 10;
dbMakeObjectCube ( target, 0.5f );
dbPositionObject ( target, tx, ty, tz );
// limb
int hand = limb(object,"handR");
float lx = dbLimbPositionX ( object, hand ),
ly = dbLimbPositionY ( object, hand ),
lz = dbLimbPositionZ ( object, hand );
// offset
float ox = tx - lx,
oy = ty - ly,
oz = tz - lz;
dbOffsetLimb ( object, hand, ox, oy, oz );
while ( LoopGDK ( ) )
{
// print data
dbSetCursor ( 0, 0 );
dbPrint ( "- TARGET -" );
dbPrint ( tx );
dbPrint ( ty );
dbPrint ( tz );
dbPrint ( "- LIMB -" );
dbPrint ( lx );
dbPrint ( ly );
dbPrint ( lz );
dbPrint ( "- OFFSET -" );
dbPrint ( ox );
dbPrint ( oy );
dbPrint ( oz );
dbPrint ( "- NEW POS. -" );
dbPrint ( dbLimbPositionX(object,hand) );
dbPrint ( dbLimbPositionY(object,hand) );
dbPrint ( dbLimbPositionZ(object,hand) );
// debug
DebugInput ( );
DebugOutput ( );
// update screen
dbSync ( );
}
// return to windows
return;
}
// debug functions
void DebugInput ( )
{
float cx = dbCameraPositionX(),
cy = dbCameraPositionY(),
cz = dbCameraPositionZ(),
cax = dbCameraAngleX(),
cay = dbCameraAngleY(),
caz = dbCameraAngleZ();
cax += dbMouseMoveY();
cay += dbMouseMoveX();
if ( cax > 80 ) cax = 80;
if ( cax < -80 ) cax = -80;
dbPositionCamera ( cx, cy, cz );
dbRotateCamera ( cax, cay, caz );
if ( dbKeyState ( 17 ) )
dbMoveCamera ( DebugCamSpeed );
if ( dbKeyState ( 31 ) )
dbMoveCamera ( -DebugCamSpeed );
}
void DebugOutput ( )
{
dbInk ( dbRGB ( 255, 0, 0 ), 0 );
dbSetCursor ( ScreenWidth / 2, 0 );
dbPrint ( dbStr ( dbScreenFPS() ) );
}
// get limb id
int limb ( int id, char * name )
{
int out = -1;
for ( int i = 0; i < 1000; i++ )
if ( dbLimbExist ( id, i ) )
if ( !strcmp( dbLimbName ( id, i ), name ) )
{
out = i;
break;
}
return out;
}
What I'm doing is I subtract the limbs position from the target position, because I assumed that this should give me the correct offset! Unfortunatly it doesn't...
Please somebody enlighten me!!! 
EDIT:
Even when I do dbOffsetLimb ( object, hand, 1, 1, 1 ) the new limb position is NOT EQUAL to the old limb position + 1,1,1 ! Why???
Now the plot thickens, the fps decreases, and the awesomeness goes through the roof.