diff --git a/racket-indent.el b/racket-indent.el
index 131ce231..ea56f42c 100644
--- a/racket-indent.el
+++ b/racket-indent.el
@@ -187,7 +187,8 @@ the `racket-indent-function` property."
   (let ((body-indent (+ (current-column) lisp-body-indent)))
     (forward-char 1)
     (if (or (racket--hash-literal-or-keyword-p)
-            (racket--data-sequence-p))
+            (racket--data-sequence-p)
+            (racket--all-hyphens-p))
         (progn (backward-prefix-chars) (current-column))
       (let* ((head   (buffer-substring (point) (progn (forward-sexp 1) (point))))
              (method (racket--get-indent-function-method head)))
@@ -228,6 +229,10 @@ Returns nil for #% identifiers like #%app."
   (looking-at (rx ?\# (or ?\:
                           (not (any ?\%))))))
 
+(defun racket--all-hyphens-p ()
+  "Magic for redex like what DrRacket does."
+  (looking-at (rx (>= 3 ?-) (and (not (syntax word)) (not (syntax symbol))))))
+
 (defun racket--data-sequence-p ()
   "Looking at \"data\" sequences where we align under head item?
 
diff --git a/racket/example/indent.rkt b/racket/example/indent.rkt
index f541a75a..401ab10e 100644
--- a/racket/example/indent.rkt
+++ b/racket/example/indent.rkt
@@ -333,3 +333,18 @@
            [b : Number])
         : Number
   10)
+
+;; Issue #521
+(define-judgment-form L
+  #:mode (⇓ I I O O)
+  #:contract (⇓ Γ e Δ v)
+
+  [----------- Value
+   (⇓ Γ v Γ v)]
+
+
+  [(⇓ Γ e Δ (λ (y) e_*))
+   (⇓ Δ (subst e_* y x) Θ v)
+   ------------------------- Application
+   (⇓ Γ (e x) Θ v)])
+
diff --git a/racket/example/indent.rkt.faceup b/racket/example/indent.rkt.faceup
index ff82d3e9..f27a8d15 100644
--- a/racket/example/indent.rkt.faceup
+++ b/racket/example/indent.rkt.faceup
@@ -333,3 +333,18 @@
            [b «b::» «t:Number»])
         «b::» «t:Number»
   «:racket-selfeval-face:10»)
+
+«m:;; »«x:Issue #521
+»(define-judgment-form «v:L»
+  «:racket-keyword-argument-face:#:mode» (⇓ I I O O)
+  «:racket-keyword-argument-face:#:contract» (⇓ Γ e Δ v)
+
+  [----------- Value
+   (⇓ Γ v Γ v)]
+
+
+  [(⇓ Γ e Δ («k:λ» (y) e_*))
+   (⇓ Δ (subst e_* y x) Θ v)
+   ------------------------- Application
+   (⇓ Γ (e x) Θ v)])
+