I'm not sure if this is called "Interpolating" or something, situation is that we have matrices 1 and 2 (position and rotation of 3D models), then we give these 2 matrix and value between 0..1 to a function that gives third matrix that is something between these 2. Very handy tool for animating stuff.

This is what i have done so far, and it works well only not looking good when 2 objects are more than 45 degrees in different angle.
Code:
procedure MatrixBlend(dest,m1,m2: PMatrix; s: single);
var i,j: integer;
begin
  for i:=0 to 3 do
    for j:=0 to 3 do
      dest[i,j]:=m1[i,j]+s*(m2[i,j]-m1[i,j]);
  for i:=0 to 2 do
    Normalize(dest[i,0],dest[i,1],dest[i,2]);
end;
Is there another kind of way to get steps between 2 animation frames?