Strange SEC_E_OUT_OF_SEQUENCE in Negotiate EncryptMessge/DecryptMessage

Hi All

I'm practicing SSPI programming for Negotiate. After the security
context is established on both sides, I've done these things:

Client create B=EncryptMessage(A) and send B to server
Server create C=DecryptMessage(B)
Server create D=MakeSignature(C) and send D to client
Client check VerifySignature(A,D)

Until now, everything is OK, and I do it reversely:

Server create F=EncryptMessage(E) and send F to client
Client call DecryptMessage(F) and SEC_E_OUT_OF_SEQUENCE is returned.

Can anyone tell me what I'm missing here? i thought as long as each
generated token is processed by the peer then this error should not