diff --git a/core/src/main/java/fj/data/List.java b/core/src/main/java/fj/data/List.java
index fc993523..2136eb3a 100644
--- a/core/src/main/java/fj/data/List.java
+++ b/core/src/main/java/fj/data/List.java
@@ -1152,7 +1152,7 @@ public final List init() {
List ys = this;
final Buffer a = empty();
while(ys.isNotEmpty() && ys.tail().isNotEmpty()) {
- a.snoc(head());
+ a.snoc(ys.head());
ys = ys.tail();
}
return a.toList();
diff --git a/tests/src/test/scala/fj/data/CheckList.scala b/tests/src/test/scala/fj/data/CheckList.scala
index f00bae1a..3692fa9c 100644
--- a/tests/src/test/scala/fj/data/CheckList.scala
+++ b/tests/src/test/scala/fj/data/CheckList.scala
@@ -174,6 +174,9 @@ object CheckList extends Properties("List") {
property("nub") = forAll((a: List[String], b: List[String]) =>
listEqual(stringEqual).eq(a append b nub, a.nub.append(b.nub).nub))
+ property("init") = forAll((a: List[String], b: String) =>
+ listEqual(stringEqual).eq(a.snoc(b).init(), a))
+
property("join") = forAll((a: List[List[String]]) =>
listEqual(stringEqual).eq(
a.foldRight((a: List[String], b: List[String]) => a.append(b), nil[String]),