diff --git a/stick/access.go b/stick/access.go
index <HASH>..<HASH> 100644
--- a/stick/access.go
+++ b/stick/access.go
@@ -95,6 +95,11 @@ func Set(acc Accessible, name string, value interface{}) bool {
 	// get value value
 	valueValue := reflect.ValueOf(value)
 
+	// correct untyped nil values
+	if fieldValue.Type().Kind() == reflect.Ptr && value == nil {
+		valueValue = reflect.Zero(fieldValue.Type())
+	}
+
 	// check type
 	if fieldValue.Type() != valueValue.Type() {
 		return false
diff --git a/stick/access_test.go b/stick/access_test.go
index <HASH>..<HASH> 100644
--- a/stick/access_test.go
+++ b/stick/access_test.go
@@ -8,7 +8,8 @@ import (
 )
 
 type accessible struct {
-	String string
+	String    string
+	OptString *string
 }
 
 func (a *accessible) GetAccessor(v interface{}) *Accessor {
@@ -72,6 +73,16 @@ func TestSet(t *testing.T) {
 	assert.False(t, ok)
 }
 
+func TestSetNil(t *testing.T) {
+	post := &accessible{}
+
+	ok := Set(post, "OptString", nil)
+	assert.True(t, ok)
+
+	ok = Set(post, "OptString", (*string)(nil))
+	assert.True(t, ok)
+}
+
 func TestMustSet(t *testing.T) {
 	post := &accessible{}
stick: handle untyped nil assignment