diff --git a/migen/actorlib/sim.py b/migen/actorlib/sim.py
index de11f1c..03d158d 100644
--- a/migen/actorlib/sim.py
+++ b/migen/actorlib/sim.py
@@ -30,13 +30,10 @@ class TokenExchanger(PureSimulable):
else:
s.wr(ep.ack, 1)
elif isinstance(ep, Source):
- if s.rd(ep.stb):
- if s.rd(ep.ack):
- completed.add(token)
- s.wr(ep.stb, 0)
- else:
- s.wr(ep.stb, 1)
- s.multiwrite(ep.token, token.value)
+ if s.rd(ep.ack):
+ completed.add(token)
+ s.wr(ep.stb, 1)
+ s.multiwrite(ep.token, token.value)
else:
raise TypeError
self.active -= completed