Since you have a synchronous reset the reset value would not take effect until the next clock edge after reset asserts.
When you assert reset does that also stop the clock? That would seem to be the most likely cause since otherwise your code looks correct (excepting the syntax error noted by Greg).