diff --git a/src/sem.c b/src/sem.c
index 061caf4f5f3929918405b1de8f4272717480a348..87cfe021743c53ea45388e7f111dabee889cec9e 100644
--- a/src/sem.c
+++ b/src/sem.c
@@ -33,7 +33,7 @@ void sem_down(sem_t *sem)
     assert(sem->magic == SEM_MAGIC);
 
     irq_disable();
-    if ((++sem->cpt) < 0)
+    if ((--sem->cpt) < 0)
     {
         current_ctx->status = CTX_WAIT;
         current_ctx->sem_next_ctx = sem->first_ctx;