diff --git a/src/core/CompileAssign.go b/src/core/CompileAssign.go
index 85eee9d..1a2f2e6 100644
--- a/src/core/CompileAssign.go
+++ b/src/core/CompileAssign.go
@@ -37,6 +37,8 @@ func (f *Function) CompileAssign(node *ast.Assign) error {
 
 	switch leftValue := leftValue.(type) {
 	case *eval.Register:
+		// TODO: Reservation needs to be canceled on defer
+		f.CurrentScope().Reserve(leftValue.Register)
 		f.Execute(operation, leftValue.Register, right)
 	case *eval.Memory:
 		// TODO: Reservation needs to be canceled on defer
diff --git a/tests/programs/add.q b/tests/programs/add.q
new file mode 100644
index 0000000..7d6e6cd
--- /dev/null
+++ b/tests/programs/add.q
@@ -0,0 +1,9 @@
+main() {
+	assert 0 + 0 == 0
+	assert 1 + 1 == 2
+	assert 1 + 2 == 3
+	assert 2 + 1 == 3
+	assert 2 + 2 == 4
+	assert 4 + 2 == 6
+	assert 8 + 2 == 10
+}
\ No newline at end of file
diff --git a/tests/programs/div.q b/tests/programs/div.q
new file mode 100644
index 0000000..4332cc7
--- /dev/null
+++ b/tests/programs/div.q
@@ -0,0 +1,9 @@
+main() {
+	assert 0 / 1 == 0
+	assert 1 / 1 == 1
+	assert 1 / 2 == 0
+	assert 2 / 1 == 2
+	assert 2 / 2 == 1
+	assert 4 / 2 == 2
+	assert 8 / 2 == 4
+}
\ No newline at end of file
diff --git a/tests/programs/mul.q b/tests/programs/mul.q
new file mode 100644
index 0000000..e1b4661
--- /dev/null
+++ b/tests/programs/mul.q
@@ -0,0 +1,9 @@
+main() {
+	assert 0 * 0 == 0
+	assert 1 * 1 == 1
+	assert 1 * 2 == 2
+	assert 2 * 1 == 2
+	assert 2 * 2 == 4
+	assert 4 * 2 == 8
+	assert 8 * 2 == 16
+}
\ No newline at end of file
diff --git a/tests/programs/sub.q b/tests/programs/sub.q
new file mode 100644
index 0000000..204b10d
--- /dev/null
+++ b/tests/programs/sub.q
@@ -0,0 +1,9 @@
+main() {
+	assert 0 - 0 == 0
+	assert 1 - 1 == 0
+	assert 1 - 2 == -1
+	assert 2 - 1 == 1
+	assert 2 - 2 == 0
+	assert 4 - 2 == 2
+	assert 8 - 2 == 6
+}
\ No newline at end of file
diff --git a/tests/programs_test.go b/tests/programs_test.go
index 953de1f..480c089 100644
--- a/tests/programs_test.go
+++ b/tests/programs_test.go
@@ -26,6 +26,10 @@ var programs = []struct {
 	{"reuse", 0},
 	{"return", 0},
 	{"return-multi", 0},
+	{"add", 0},
+	{"sub", 0},
+	{"mul", 0},
+	{"div", 0},
 	{"math", 0},
 	{"precedence", 0},
 	{"operator-number", 0},