Ok, this is really getting anoying. Any time I think that I understand how this stuff works I try something and it doesn't work at all as intended.

I have a model with 2 textures. One is a 256x256 base texture, the second texture is a 768x256 texture that should hold 3 frames that I want to cycle using an effect. This is what I have:

FUNCTION mtl_test_view ()
{
mtl.matrix11 = float(1.0/3.0);
mtl.matrix12 = 0;
mtl.matrix13 = 0;
mtl.matrix14 = 0;
mtl.matrix21 = 0;
mtl.matrix22 = float(1.0);
mtl.matrix23 = 0;
mtl.matrix24 = 0;
mtl.matrix31 = 0;
mtl.matrix32 = 0;
mtl.matrix33 = 0;
mtl.matrix34 = 0;
mtl.matrix41 = 0;
mtl.matrix42 = 0;
mtl.matrix43 = 0;
mtl.matrix44 = 0;
}

FUNCTION mtl_test_init ()
{
mtl.event = mtl_test_view;
mtl.enable_view = on;
mtl.skill1=pixel_for_vec(vector(4,4,4),0,8888);
}

material mat_test
{
event = mtl_test_init;

effect "
dword mtlSkill1;
texture entSkin1;
texture entSkin2;

matrix matMtl;

technique whatever
{
pass p0
{
texture[0]=<entSkin1>;
texture[1]=<entSkin2>;

zWriteEnable=true;
alphaBlendEnable=false;

AlphaTestEnable=True;
AlphaRef=<mtlSkill1>;
AlphaFunc=Greater;
CullMode=CCW;

colorArg1[0]=Texture;
colorOp[0]=Modulate2x;
colorArg2[0]=Diffuse;

colorArg1[1]=Current;
colorOp[1]=Add;
colorArg2[1]=Texture;
TexCoordIndex[1]=1;
TextureTransformFlags[1]=count2;
TextureTransform[1]=<matMtl>;
}
}

technique fallback { pass p0 { } } // empty fallback causes normal rendering without effect
";
}

Until now I thought that having 3 pictures and setting the X scale to 1/3 should end up with the second stage holding the first 256x256 pixels of the second texture but somehow it doesn't.
Could anyone please tell me what I'm doing wrong?